2009-07-10 14 views
1

に私が持っている必要があります。正しい順序のhtaccessファイル

http://www.example.com/v1/my-project/はそうhttp://example.com/my-project/

にリダイレクト:

を(1)HTTP_HOSTから

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

(2)request_uriの 'v1 /'部分を削除する

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

(3)404をホームページにリダイレクトしたいと思っています。

ErrorDocument 404/

(4)最後に、私のすべての文書が実際に現在アクティブなWebサイトをホストする「V2 /」フォルダ内に存在するが、私は、URLに「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

0

あなたが最初に外部へのリダイレクト(Rフラグ)を引き起こし、その後、他のルールされている任意のルールを記述する必要がありそうでない場合は、すでに書き換えられたURLすることができますそれはちょうどinteのために意図されていましたが、外部リダイレクトに使用されますリダイレクト。

私はあなたの現在の注文を変更しません。

関連する問題