2016-06-14 45 views
0

私は、mod_aliasのRedirectディレクティブとmod_rewriteのRewriteRuleの両方を使用しているApache設定ファイルを持っています。mod_aliasとmod_rewriteの優先順位

私が理解しているように、mod_aliasはファイルの上から下の順に動作し、反対のmod_rewriteは[L]フラグで終了しない限り最後の規則が一致します。

私の質問は、私のRedirectルールはRewriteRuleの上に置かれていますが、RewriteRuleは依然として適用されているようですので、すべて同じURLにリダイレクトされます。私が達成しようとしています何

は、別のWebサーバへの特定の場所をリダイレクトし、スニペットはまた、この

<VirtualHost *:80> 
ServerName example.com 
Redirect permanent "/foo/bar/location1/" "https://example2.com/foo/baz/location1" 
Redirect permanent "/foo/bar/location2/abc" "https://example2.com/foo/baz/location2/def" 

RewriteEngine on 
RewriteRule ^.*$ "https://example2.com/catch-all/? [R=301, L] 

のように見えるので、キャッチオールのmod-書き直すとを持って、これらの振る舞いを行うです彼らがブロックの内側か外側にいるかは違っていますか?

答えて

0

リライトルールの後にリダイレクトルールを書き込む必要があります。リライトルールは、次に従う必要がある書き換えルールとリダイレクトルールを最初に確認するためです。

<VirtualHost *:80> 
ServerName example.com 
RewriteEngine on 
RewriteRule ^.*$ "https://example2.com/catch-all/? [R=301, L] 
Redirect permanent "/foo/bar/location1/" "https://example2.com/foo/baz/location1" 
Redirect permanent "/foo/bar/location2/abc" "https://example2.com/foo/baz/location2/def" 
+0

これは、mod_rewriteがmod_aliasよりも優先されることを意味していますか? – darethas

+0

はいmod_rewriteがmod_aliasよりも優先されます。 – karan

関連する問題