2013-03-14 70 views
0

正如標題所暗示的,我想將一個子目錄重定向到另一個子目錄,同時阻止直接訪問後一個子目錄。舉例來說,我想阻止對domain.com/foo直接訪問:從一個子目錄重定向到另一個,但阻止直接訪問後一個子目錄

RewriteRule ^foo [F,NC] 

但我想domain.com/bar重定向到domain.com/foo

RewriteRule ^bar/* /foo/ [R=301] 

是否有可能這兩個規則合併成一個,所以domain.com/bar會加載domain.com/foo但是domain.com/foo不是加載domain.com/foo

+0

這個問題被關閉?無聊的管理員的教科書示例沒有更好的辦法。 – md4 2016-02-07 02:05:46

回答

1

啓用mod_rewrite的,並通過httpd.conf的.htaccess,然後把這個代碼在你.htaccessDOCUMENT_ROOT目錄:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

# block direct access to /foo/* 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+foo[/\s] [NC] 
RewriteRule^- [L,F] 

# allow access to /foo/* via /bar/* 
RewriteRule ^bar/(.*)$ /foo/$1 [L,NC] 
+0

這工作完美。你會介意快速解釋它是如何工作的嗎? – Anthony 2013-03-19 19:30:24

+0

當然,第一條規則是使用'%{THE_REQUEST}'變量來檢查在瀏覽器中輸入的實際URL是否爲'/ foo/*',如果是則禁止錯誤返回給用戶。第二條規則是**在內部將所有'/ bar/anything'請求轉發給'/ foo/anything' URI。由於在第二條規則中不使用'R'標誌,所以'%{THE_REQUEST}'不會改變,第一條規則不會再被觸發。如果它回答你的問題,你現在可以接受這個答案嗎? – anubhava 2013-03-19 20:25:04

+0

有道理。謝謝! – Anthony 2013-03-19 20:30:01

相關問題