Apache url重寫問題記錄

2022-09-11 20:27:19 字數 1016 閱讀 7024

由於**需要做乙個英文站點,訪問路徑想用www.mysite.com/en/這樣開頭的就是英文站點,由於英文站點和中文站只是模板的說明文字變成英文,所以需要重定向一下這個位址,實現

這樣的跳轉,同時瀏覽器的url不變

之前一直是用的別人的rewrite規則修改下就ok的。但是之前的rewrite規則沒有以上類似的跳轉,只好google~

照著寫了個規則

rewriterule ^en/(.*?)$    /$1\?en=1 [nc]

但是這樣的規則對於已有引數的跳轉錯誤

,引數資訊沒了~繼續看apache的mod_rewrite的文件,名詞相對來說比較晦澀,不是那麼好懂,幸好google了之後看到引數資訊是在這個變數裡的%,於是修改為

rewriterule ^en/(.*?)$    /$1\?%&en=1 [nc]

這樣基本上是可以了,不過當沒有引數的時候後邊的引數變成了?&en=1這個相當的不好看啊,

然後注意到了rewritecond 這個指令,意思就是rewrite condition,重寫條件

rewritecond % -s [nc]

rewriterule ^en/(.*?)$   /$1\?en=1 [nc]

rewritecond % !-s [nc]

rewriterule ^en/(.*?)$    /$1\?%&en=1 [nc]

照著寫成這樣,不過這個-s !-s 很是詭異啊,我的理解是-s代表了條件是為空,但是第乙個條件在query_string為空的時候沒有執行,依然執行了!-s後的重寫語句,奇怪了~不過暫時先這樣,繼續弄新英文站吧~

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路由配置重寫

最近複習了一下apache rewrite url重定向功能,有個專案用到了.htaccess,簡單的幾行 是看不怎麼明白,於是複習了一下。1.apache rewrite的主要功能 就是實現url的跳轉和隱藏真實位址,基於perl語言的正規表示式規範。平時幫助我們實現擬靜態,擬目錄,網域名稱跳轉,...