url重寫(urlrewrite)的一些系統變數

2021-09-08 12:22:57 字數 3738 閱讀 7927

1)可用的一些系統變數,在重寫條件和重寫規則裡都可以使用,格式為 %

使用示例:

ps:具體每個變數是什麼意思就不說了,看變數名一般也知道是什麼意思,實在不知道就自己再查吧

2)引數變數(只列出常用的幾個,其他的請看 這裡)

-d   是否乙個目錄

-f    是否乙個檔案

-u   是否一條有效的鏈結

這個比較常用來做偽靜態時,判斷訪問鏈結是否乙個真實目錄或乙個真實檔案,不對它們進行重寫(!是不等於的意思)

rewriteengine on

rewritecond % !-d

rewritecond % !-f

rewriterule ^(.*)$ index.php?s=/$1 [qsa,pt,l]

3)比較運算子(用於重寫條件 rewritecond)

字串比較

=      等於

<      小於

>      大於

<=     小於等於

>=       大於等於

整數比較

-eq     等於(equal)

-ge     大於等於(greater or equal)

-gt     大於(greater than)

-le      小於等於(less or equal)

-lt      小於(less than)

-ne     不等於(not equal)

4)rewritebase 重寫的根目錄

這樣的話,是不是會很煩??這時候你就可以用rewritebase了

5)rewriterule 後面的標識(flags)(同時只列出幾個常用的,其他的請看 這裡)

[qsa]      保留未重寫之前的鏈結的查詢引數

rewriterule "/pages/(.+)" "/page.php?page=$1"[qsa]

使用 [qsa] 標識, 乙個類似 /pages/123?one=two 這樣的請求,會被重寫成 /page.php?page=123&one=two 這樣,如果沒有 [qsa] 標識, 一樣的請求,將會被重寫成 /page.php?page=123

[pt]       使用這個標識,會讓系統遇到一些以pathinfo格式分隔的url,不當成乙個目錄路徑來處理

例如:/home/article/detail/id/1.html

預設地,url用/分隔的,是會被認為是目錄來處理的(home目錄下的article目錄下的detail目錄下的id目錄下的1.html檔案)

使用[pt]標識,就是告訴系統,這就是條字串,不是目錄,不要去找目錄

[l]      匹配的最後一條規則,意思就是如果匹配了這一條規則,就不用比較這一條規則後的規則是否匹配了,直接停掉就可以了

[nc]     匹配時忽略大小寫

[r]       重定向,url防盜煉或301跳轉等等會用到

ps:重定向時,想發出什麼請求頭,就用r=狀態碼就可以了

例如301重定向就是這樣寫的:[r=301,l]

6)正則怎麼寫?

1、正則部分是不需要處理網域名稱也處理不到網域名稱的,重寫從根目錄(/)開始

#

錯誤的rewriterule htt:\/\/www\.abc\.com\/index\.html http:\/\/www\.abc\.com\/index\.php [nc,l]

#這個也是錯誤的

rewriterule (.*)\/index\.html $1\/index\.php [nc,l]

#正確的

rewriterule index\.html index\.php [nc,l]

2、^和$

^和$是匹配開頭和結束的,不限制開頭和結束時,相當於模糊匹配

#但下面這樣是不行的,鏈結還有網域名稱路徑和檔名呢,直接.jpg這樣肯定是匹配不上的

#下面這樣是這是可以的

$1 $2 這些點位符是替換首頁正則式匹配上的內容的,乙個括號()乙個組

rewriterule ^/article/(\d+)/(\d+)\.html$ index\.php/article/index/cat_id/$1/id/$2 [nc,l]

前面兩個(\d+)組,後面用$1 $2代替,再加乙個組,就用$3代替,以此類推~

暫時就這樣吧,完。

使用 URLRewrite 重寫URL

1 測試環境 web inf 下,注意不要修改urlrewrite.xml檔名。2 修改web.xml 在web.xml中增加filter配置 其中 是定製的規則,是顯示的url,是真正請求的url。type forward 位址列顯示from部分 靜態化url type redirect 位址列顯...

URLRewrite實現偽靜態 url重寫

urlrewritefilter org.tuckey.web.filters.urlrewrite.urlrewritefilter 4.修改urlrewrite.xml a z world.jsp?id 1 world world.jsp?tid 1 html test1 1.jsp the o...

URLRewrite實現URL位址偽靜態化

1使用urlrewrite實現url位址偽靜態化1.1urlrewirte的用處 1.滿足搜尋引擎的要求。2.隱藏技術實現,提高 的移植性。3.滿足美感的要求 個人感覺這個用處太牽強 1.2專案部署 3.把urlrewrite.xml複製到專案的webroot web inf 目錄下 4.在web....