2009-07-10 174 views
1

我需要有:正確的順序

http://www.example.com/v1/my-project/重定向到http://example.com/my-project/

這樣:

(1)從HTTP_HOST去除WWW

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 

(2)刪除request_uri的'v1 /'部分

RewriteCond %{REQUEST_URI} ^/v1/(.*)$ [NC] 
RewriteRule . %1 [R=301,L] 

(3)我也想將所有404重定向到主頁。

ErrorDocument 404/

(4)最後,我的所有文件實際上存在於哪些主機當前活動網站「V2 /」文件夾中,但我不希望在網址「V2」,只是「/」

RewriteCond %{REQUEST_URI} !^/v2/ [NC] 
RewriteRule ^(.*)$ /v2/$1 [NC,L] 

所以,這是我的規則。我的問題是:我不管理(2):它被重定向到/(因爲規則(3)我想我認爲我的規則的順序必須錯誤,但我似乎無法做到正確。你有幫助嗎?

回答

3

「規則3」根本就不是一個規則,它的順序與你的RewriteRules無關,規則2因其他原因失敗,我不確定它是否會解決你的問題問題,但我會有所簡化你的規則,通過這樣寫他們。

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
RewriteRule (.*) http://example.com/$1 [R=301,L] 

RewriteRule ^v1/(.*) /$1 [R=301,L,NC] 

RewriteCond %{REQUEST_URI} !^/v2/ [NC] 
RewriteRule (.*) /v2/$1 [NC,L] 
+0

作品一種享受,非常感謝! – pixeline 2009-07-10 11:41:11

0

你應該先寫,是造成外部重定向(R標誌),然後在其他規則的任何規則,否則已經重寫URL可以用於外部重定向,儘管它僅用於inte rnal重定向。

所以我不會改變你現在的訂單。