2016-06-14 43 views
0

我有一個Apache的配置文件利用兩個mod_alias中的Redirect指令和mod_rewrite的的重寫規則的。mod_alias中VS mod_rewrite的優先

從我的理解,mod_alias中的作品在頂部到文件底部的順序,並mod_rewrite的對面,最後一個規則匹配,除非你用[L]標誌終止。

我的問題是,我的Redirect規則放在RewriteRule的上方,但RewriteRule似乎仍然被應用,所以我最終將每個人重定向到相同的URL。

我所試圖實現的是重定向某些地方到另一個網絡服務器,並有一個包羅萬象的與國防部重寫這樣一個片段看起來像這樣

<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] 

而且,做這些行爲如果他們在一個街區內或外面,那麼情況會不同嗎

回答

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