今天看了301重定向設置的方法,對網站的首頁權重有較重要意義。因而看了別人寫的.htaccess文件發現一頭霧水,因而查了一些資料來進一步理解。php
RewriteCond語法css
RewriteCond TestString CondPattern [Flags]html
其中的TestString是指一個文本格式的條件 這是一個map(鍵值對)格式的數據類型。瀏覽器
CondPattern是條件參數服務器
Flags標識是是第三個參數,能夠用來緊跟下一個條件,這兒用OR表示或者,若是沒有[Flags],則用隱含的AND,表示而且。其它的還能夠NC等等,表示忽略大小寫。網站
RewriteCond就像咱們程序中的if語句同樣,表示若是符合某個或某幾個條件則執行RewriteCond下面緊鄰的RewriteRule語句,這就是RewriteCond最原始、基礎的功能。google
看個例子:spa
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的語法htm
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