apache url路由配置重寫

2022-03-23 14:48:45 字數 2767 閱讀 7789

最近複習了一下apache rewrite url重定向功能,有個專案用到了.htaccess,簡單的幾行**,是看不怎麼明白,於是複習了一下。

1.apache rewrite的主要功能

就是實現url的跳轉和隱藏真實位址,基於perl語言的正規表示式規範。平時幫助我們實現擬靜態,擬目錄,網域名稱跳轉,防止盜鏈等

2.apache rewrite的配置

apache下的rewrite配置主要有兩種,一種是針對整個apache伺服器的配置,此種配置的rewrite規則是直接在httpd.conf下書寫。配置步驟如下:

(1)去除httpd.conf檔案中"#loadmodule rewrite_module modules/mod_rewrite.so"前面的"#"號;

(2)然後再在httpd.conf中書寫如下規則:

rewriteengine on

#當訪問任何以t_開頭,以.html結尾的檔案時,將$1用與(.*)匹配的字元替換後,訪問相應的test.php頁面

rewriterule ^/t_(.*).html$ /test.php?id=$1

另一種是針對apache伺服器下的某一目錄的配置,此種配置的rewrite規則需在此目錄下建立乙個.htaccess檔案來書寫。配置步驟如下:

(1)去除httpd.conf檔案中"#loadmodule rewrite_module modules/mod_rewrite.so"前面的"#"號; 

(2)修改httpd.conf檔案中的"allowoverride none"為"allowoverride all",同時最好將options也置為"all",否則可能會出問題。 

(3)在目錄中建立.htaccess檔案,並用記事本開啟,書寫如下規則: 

rewriteengine on 

rewriterule ^/t_(.*).html$ /test.php?id=$1 

3.apache rewrite規則的書寫

rewriteengine on 

rewriterule ^/test([0-9]*).html$ /test.php?id=$1 

rewriterule ^/new([0-9]*)/$ /new.php?id=$1 [r] 

舉例:

rewriteengine on 

#當我們訪問的位址不是以www.

163.com開頭的,那麼執行下一條規則

4.apache rewrite規則修正符

1) r 強制外部重定向 

2) f 禁用url,返回403http狀態碼。 

3) g 強制url為gone,返回410http狀態碼。 

4) p 強制使用****。 

5) l 表明當前規則是最後一條規則,停止分析以後規則的重寫。 

6) n 重新從第一條規則開始執行重寫過程。 

7) c 與下一條規則關聯

如果規則匹配則正常處理,以下修正符無效

8) t=mime-type(force mime type) 強制mime型別 

9) ns 只用於不是內部子請求 

10) nc 不區分大小寫 

11) qsa 追加請求字串

12) ne 不在輸出轉義特殊字元 \%3d$1 等價於 =$1

5 重寫中設計到的特殊字元的含義【與正規表示式有些相似】

*代表前面0或更多個字元

+代表前面1或更多個字元

?代表前面0或1個字元

^代表字串的開始位置

$代表字串結束的位置

。為萬用字元,代表任何字元

\將跟在其後的字元還原為字元本身,例如「\+」代表的就是「+」,而非其它意思。

^在方括號裡表示非的意思。例如[^.]代表非萬用字元。

6 舉例1:

如果檔案不存在重定向到404頁面

rewritecond % !-f

rewritecond % !-d

rewriterule .? /404.php [l]

這裡-f匹配的是存在的檔名,-d匹配的存在的路徑名。這段**在進行404重定向之前,會判斷你的檔名以及路徑名是否存在【請注意這裡】。你還可以在404頁面上加乙個?url=$1引數:

rewriterule ^/?(.*)$ /404.php?url=$1 [l]

7 舉例2:

偽靜態嘗試

rewriteengine on

rewriterule ^test([0-9]*).html$ /index.php?id=$1

容易引申的偽靜態例子

8 舉例3:

將.html字尾名轉換成.php

rewriterule ^/?([a-z/]+)\.html$ $1.php [l]

apache url路由配置重寫

1.apache rewrite的主要功能 就是實現url的跳轉和隱藏真實位址,基於perl語言的正規表示式規範。平時幫助我們實現擬靜態,擬目錄,網域名稱跳轉,防止盜鏈等 2.apache rewrite的配置 apache下的rewrite配置主要有兩種,一種是針對整個apache伺服器的配置,此...

apache url路由配置重寫

1.apache rewrite的主要功能 就是實現url的跳轉和隱藏真實位址,基於perl語言的正規表示式規範。平時幫助我們實現擬靜態,擬目錄,網域名稱跳轉,防止盜鏈等 2.apache rewrite的配置 apache下的rewrite配置主要有兩種,一種是針對整個apache伺服器的配置,此...

Apache url重寫問題記錄

由於 需要做乙個英文站點,訪問路徑想用www.mysite.com en 這樣開頭的就是英文站點,由於英文站點和中文站只是模板的說明文字變成英文,所以需要重定向一下這個位址,實現 這樣的跳轉,同時瀏覽器的url不變 之前一直是用的別人的rewrite規則修改下就ok的。但是之前的rewrite規則沒...