今天看了301重定向設置的方法,對網站的首頁權重有較重要意義。於是看了別人寫的.htaccess文件發現一頭霧水,於是查了一些資料來進一步理解。
RewriteCond語法
RewriteCond TestString CondPattern [Flags]
其中的TestString是指一個文本格式的條件 這是一個map(鍵值對)格式的數據類型。
CondPattern是條件參數
Flags標識是是第三個參數,可以用來緊跟下一個條件,這兒用OR表示或者,如果沒有[Flags],則用隱含的AND,表示並且。其它的還可以NC等等,表示忽略大小寫。
RewriteCond就像我們程序中的if語句一樣,表示如果符合某個或某幾個條件則執行RewriteCond下面緊鄰的RewriteRule語句,這就是RewriteCond最原始、基礎的功能。
看個例子:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5.0.*
RewriteRule index.php index.m.php
RewriteCond %{HTTP_USER_AGENT} ^Lynx.*
RewriteRule index.php index.L.php
RewriteRule index.php index.b.php
上面語句的作用是當你是用FF瀏覽器訪問index.php這個文件的時候,會自動讓你訪問到index.m.php這個文件,當你是用一些移動終端訪問 的 時候,會讓你對index.php這個文件的訪問實際訪問的是index.L.php去,如果你是用其它的瀏覽器訪問的時候,會讓你跳到 index.b.php。
RewriteRule的語法
RewriteRule Pattern Substitution [Flags]
其中的Pattern就是參數,一般為一些文件的擴展名,Substitution是用來替換前面用的,這兒的Flags,常用的R表示 redirect(強制重定向),F表示forbidden(禁止訪問),L表示last(最后),通常當你希望停止重寫操作而立即重定向時,可用它。
.htaccess中用到的正則
元字符^(和數字6在同一個鍵位上的符號)和$都匹配一個位置,這和\b有點類似。
^匹配你要用來查找的字符串的開頭
$匹配結尾。
比如一個網站如果要求你填寫的QQ號必須為5位到12位數字時,可以使用:^\d{5,12}$。
通過.htaccess來防止網站的圖片、壓縮文件、或視頻等非Html文件被盜鏈的方法相當簡單,通過在該文件中加入幾句命令即可保護我們寶貴的帶寬。
用戶盜鏈我們的資源會返回403(沒有權限)錯誤
再看個防盜鏈的例子:
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?abc.com/.*$ [NC] RewriteRule \.(gif|jpg|js|css)$ - [F]
[NC]表示不區分大小寫
“RewriteEngine On”,開啟 Rewrite 規則開關;
HTTP_REFERER:表示訪問我們服務器的來源站點。
上面的含義是:如果來源站點不為空且來源站點不是(http://www.abc.com或http://abc.com)[網址不區分大小寫] 則所有以.gif .jpg .js .css為后綴的文件都不能被訪問.當然,對方如果偽造來源這樣我們就束手無策了,例如對方偽造我們的站點采集我們的資源,這是另外的事了。
盜鏈內容自定義
你會經常看到有的網站顯示“來自百度空間”或“圖片無法顯示”等圖片,這是防盜鏈的另一種設置,即返回的是一個自定義圖片,配置如下:
RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?example.com/(.*)$ [NC] RewriteCond %{HTTP_REFERER} !^http://(www.)?google.com/(.*)$ [NC] RewriteRule \.(gif|jpg)$ http://www.abc.com/image.gif [R,L]
禁止訪問
RewriteRule ^.* - [F,L]
這里”-”表示沒有替換,F表示禁止對URL地址的存取,L表示停止處理接下來的規則
例子:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera [NC]
RewriteRule ^.* - [F,L]
瀏覽器為IE和Opera的訪客將被禁止訪問。
部分參考:http://www.sjyhome.com/htaccess/hotlinking.html