【PHP 】伪静态 - 4. 实际运用
偽靜態(tài)的實際運用
1. 在一個項目中有兩個文件夾,public和private, public文件夾的圖片可以被所有人訪問,private只能被自己訪問。如何實現(xiàn)?
第一個方法是:
在public和private下創(chuàng)建.htaccess文件,對于private只讓127.0.0.1訪問,public文件夾都可以訪問。
private文件夾下的配置
| order deny,allow????? #注意deny,allow中間不能由空格 deny from all allow from 127.0.0.1 |
?
這個的缺點是,沒有辦法去控制本apache的另外一個虛擬主機的請求。
另外這個不夠精細化,他會封殺所有的資源,不僅僅是圖片。
于是我們就換一個思路,使用http的referer的防盜鏈技術(shù)。
?
第二個方法是:
在private文件夾下寫一個.htaccess文件
| <ifModule rewrite_module> RewriteEngine On # RewriteCond:滿足某個條件則放行,不被RewriteRule束縛 # HTTP協(xié)議,如果是外網(wǎng)來的必須帶一個Referer # 如果請求頭不是hsp.fi就封殺 # 但是可以自己模擬一個http請求頭,這樣就可以取出圖片! RewriteCond %{HTTP_REFERER} !hsp.fi #[F] - Forbidden, 如果請求的是jpg圖片,則禁用 RewriteRule .*\.jpg -[F] RewriteRule .*\.css -[F] RewriteRule .*\.js -[F] </ifModule> |
?
注意:如果RewriteCond有多個條件則:
| <ifModule rewrite_module> RewriteEngine On # RewriteCond:滿足某個條件則放行,不被RewriteRule束縛 # HTTP協(xié)議,如果是外網(wǎng)來的必須帶一個Referer # 如果請求頭不是hsp.fi就封殺 # 但是可以自己模擬一個http請求頭,這樣就可以取出圖片! RewriteCond %{HTTP_REFERER} !hsp.fi RewriteCond %{HTTP_FILENAME} !-f #[F] - Forbidden, 如果請求的是jpg圖片,則禁用 RewriteRule .*\.jpg -[F] RewriteRule .*\.css -[F] RewriteRule .*\.js -[F] ? #可以配置多份 RewriteCond %{HTTP_REFERER} !hsp2.fi RewriteRule .*\.jpg -[F] ? </ifModule> |
?
課堂練習(xí):
配置一個網(wǎng)站.answer.fi
配置網(wǎng)站的歡迎頁面,404,rewrite,public,private圖片的控制
| 1. 配置vhost, 注意allowoverwrite all |
| 2. 配置host |
| 3. 建一個文件夾answer |
| 4. 創(chuàng)建error, public, private目錄,和welcome.html, .htaccess文件 ? .htaccess文件中的配置 ? Allow from All #配置首頁面 DirectoryIndex welcome.html errorDocument 404 /error/404.html |
| 5. 在error目錄下放404.html頁面 |
| 6. 在public目錄下做配置 ? Allow from all |
| 7. 在private目錄下做配置 ? <ifModule rewrite_module> RewriteEngine On RewriteCond %{HTTP_REFERER} !answer.fi RewriteRule .*\.jpg -[F] </ifModule> |
?
補充說明:
1. 關(guān)于404的說明:
對于ie瀏覽器而言,404頁面的內(nèi)容大小不能低于512b字節(jié)。
2. 如果在<Directory>節(jié)點配置了 Options Indexes,同時你又啟用了rewriteEngine On你會看到403的提示. 原因是因為我們的父級目錄的Options 本身就配好了 Options Indexes FollowSymLinks,
我們要不不配置要么就平配一樣的,重寫一遍。
?
偽靜態(tài)實際運用2:
?
實現(xiàn):
RewriteRule ([a-zA-Z_]+)\/([a-zA-Z]+) index.php?c=$1&a=$2
?
運用3:
rewriteCond指令的介紹
如何做到,當(dāng)abc.html存在就直接訪問abc.html, 否則就去訪問index.php?
| #如果請求的abc.html不是一個文件就走index, 如果是一個文件就不走過濾機制 RewriteCond %{REQUEST_FILENAME} !-f #并且不是一個目錄 RewriteCond %{REQUEST_FILENAME} !-d RewriteRule abc.html index.php |
?
偽靜態(tài)實際運用4:
在TP框架中使用rewrite簡化url地址,目的是seo,步驟:
轉(zhuǎn)載于:https://www.cnblogs.com/Answer1215/p/3151480.html
總結(jié)
以上是生活随笔為你收集整理的【PHP 】伪静态 - 4. 实际运用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Struts2运行机制(MVC)的分析:
- 下一篇: sql数据黑马程序员——SQL入门