.htaccess檔案大家都不陌生吧。不認識的自己去搜一下……順便告訴你,這是個好東西,值得一學。
似乎網上關於.htaccess編寫方法的教程很有限,相信博主們也沒有幾個是自己寫的吧?
我在這裡就搜了幾個常用規則,總結一下rewrite規則的用法。當然這只是.htaccess功能的一小部分,但是相當實用。
如果熟練掌握rewrite規則的編寫,能夠加強對**url的控制,對使用者體驗、seo都十分有利。
一、防盜煉功能
逐行講解一下:
1.開啟rewrite功能。有可能伺服器設定裡已經是全域性下開啟了,但是多寫也沒事。
2.rewritecond指令,定義生效條件,用於尋找匹配條件的位址。後面內容用正規表示式匹配。代表含義是傳送的請求不由mysite.com而來,那就是盜鏈啦。末尾的[nc]代表忽略大小寫。
3.傳送請求的主機字首不為空。
4.rewriterule指令,定義重寫規則,把匹配的位址按此規則重寫。本例中把這些字尾為這些格式的,都替換到某乙個下。[l]表示這是最後一段規則。
只這四行就實現了防盜煉是不是很神奇(- -||),編寫起來是不是又覺得複雜。
這裡總結了幾個常用引數(不是全部):
rewritecond
下:[nc] 不分字母大小寫
[or] 用於連線下一條規則
rewriterule下:
[r] 強制重定向,[r=code]
code
預設為302
[f] 禁用url,返回http 403 錯誤
[l] 這是最後一條規則,之後內容無用
還有一篇關於正規表示式的教程(很詳細):
二、**規範化
1
options +followsymlinks
2
rewriteengine on
3
rewritecond % ^yourdomain.com [nc]
4
rewriterule ^(.*)$ [r=301,l]
這個是把所有二級網域名稱都重定向到www.yourdomain.com的例子,現在看來是不是很簡單了?
需要注意的是,這裡的options +followsymlinks不是必須的,但在某些伺服器如果不設定followsymlinks,可能引起500錯誤。
再來看乙個好玩的重定向
1
rewriteengine on
2
rewritebase /
3
rewritecond % (googlebot)
4
rewriterule ^ [r=301,l]
1.開啟rewrite功能。
2.rewritebase指令,設定目錄級重寫的基準url。可以理解成把該目錄(這個.htaccess所在目錄)假定為基準的url字首。本例中這樣的寫法無用。
3.rewritecond指令。匹配所有user_agent為googlebot的傳送請求。
4.rewriterule指令。本例中把這些請求都重定向到了abc.com。
在本例中,這個配置應該是黑客所為,把google蜘蛛指向某個**,等於偽造pr。
三、臨時錯誤頁面
當你的**在公升級、修改的時候,你最好讓訪客轉到指定的頁面,而不是沒做完的頁面或者是錯誤頁。
這時我們做乙個302轉跳就好。
1
rewriteengine on
2
rewritecond % !/maintenance.html$
3
rewritecond % !^123.123.123.123
4
rewriterule $ /error.html [r=302,l]
1.繼續開啟rewrite功能。- -|
2.request_uri,請求的url值。這裡指所有訪問maintenance.html頁面的請求。
3.remote_addr,向伺服器傳送請求的ip位址。本例中此處應設為你自己的ip,這樣就只有你能訪問。
4.rewriterule指令。本例中把這些請求都重定向到了error.html 。
在本例,我們總結幾個常用的正規表示式和特殊符號。
(.*) 用於匹配某一區域內所有內容。如 abc/def/ghi 可用 (.*)/(.*)/(.*)
匹配。([a-za-z_]+) 匹配英文單詞,允許用-和_連線。
([0-9]+) 匹配多位數字,通常用於匹配id。
([0-9]) 只匹配一位的數字。
^ 表示正則的開始
$ 表示正則的結束
四、重定向rss位址到feedburner
除了可以更改模板裡的rss位址外,.htaccess也能實現rss位址的更改,並更加方便。
1
rewriteengine on
2
rewritecond % !feedburner
[nc]
3
rewritecond % !feedvalidator [nc]
4
rewriterule ^feed/?([_0-9a-z-]+)?/?$ [r=302,nc,l]
有了上面的總結,本例其實就很簡單了吧。
唯一要注意的是這樣操作要確保填寫正確的http_user_agent。其實你不常換模板的話。。可能還是直接改模板更省事。
mod_rewrite模組中文參考手冊:
p.s.其實我以為rewrite也只是apache乙個模組而已,做到邊查邊寫足矣,實在不行直接去搜乙個規則也未嘗不可。沒有必要費太大力氣去學。不過其中的正規表示式還是非常實用的,值得深入學習。
LANMP 如何禁止訪問 htaccess 檔案
其實這個很簡單,因為 htaccess 在 lanmp 環境下,當他作為檔案被訪問的時候是由 nginx 作為靜態檔案來處理的,所以我們需要在 nginx 裡來新增規則。而且這個規則,在 nginx 預設的裡面是存在的,如下 deny access to htaccess files,if apac...
最新Hadoop Shell完全講解
功能 將乙個或多個原始檔系統的內容追加至目標檔案系統 2 cat 功能 將指定uri下的檔案內容輸出至stdout 在控制台列印 使用方法 hadoop fs cat uri hadoop fs cat flume web output part r 00000 3 chgrp 功能 改變檔案所屬的...
《Spring Boot入門到實戰》最新
課程介紹 本spring boot課程包括兩個小課程,分別為 spring boot快速入門 和 spring boot實戰高階 spring boot快速入門 課程大綱 1 spring boot入門 spring boot簡介 spring boot快速入門案例 2 spring boot進行w...