Apache-2.2
通過 mod-rewrite 重定向,僅使用 apache htaccess
大家好,關於mod-rewrite的問題。當使用者輸入
/somepage?ln=xx
我的伺服器時,我的伺服器會隱形載入/xx/somepage
,這是一個非常漂亮的 url。但是,那些醜陋的頁面仍然會重新出現記憶體,我只是希望它們永久重定向到漂亮的 url。所以它們會消失,只剩下美麗的網址。
/somepage?ln=xx
應該永久 301 重定向到/xx/somepage
該頁面,然後將不可見地載入頁面而不會顯示醜陋的 url。當沒有設置語言時,假設為英語:/somepage
應該重定向到/en/somepage
在這兩種情況下,文件副檔名都應該是可選的(例如應該使用和不使用各種副檔名).php .htm .pag,換句話說,如果這些 url 有它們,所有 3 字元副檔名也應該工作)。
/contact?ln=xx或**/contact.zzz?ln=xx**
應該都去 /xx/contact
語言只有 2 個字元。我現在擁有的:
# make language as a /lang/page like /xx/contact WORKS RewriteRule ^([a-z][a-z])/(.*) /$2?ln=$1 [L] # when no page, only language set, go to root /nl or /nl/ WORKS RewriteRule ^([a-z][a-z])/?$ /$1/home [R=301,L] # permanently redirect ugly urls to nice ones, so the ugly ones dissappear RewriteRule ???
所以你將醜陋的 URL 重定向到好的 URL,然後再次重寫它?
我認為這裡的技巧是使用 RedirectMatch 而不是 RewriteRule (檢查你是否載入了模組):
RedirectMatch 301 /(.*)?ln=([a-z][a-z]) http://example.com/$2/$1
但是,我真的不知道當您實際上是在創建一個循環時它的表現會有多好。它應該可以工作,因為該
Redirect
部分指示瀏覽器請求“漂亮”的 URL,但伺服器隨後會悄悄地將Rewriting
它返回給“醜陋”的 URL 進行處理。關鍵是,如果重寫後的 URL 再次被重定向處理,你的伺服器可能會內爆成一個迷你黑洞。我不知道。
(為清楚起見進行了編輯。)