2015-02-09 32 views
0

花費大量時間尋找解決方案,但我幾乎不知道htaccess和重定向。如何根據URL模式動態重定向特定的子目錄?

我的問題是:如何重定向URL的特定部分,並忽略其他人?

例如http://www.example.com/foo重定向到http://www.example.com/http://www.example.com/foo/bar保持原樣。

在此先感謝!

回答

0

你可以使用.htaccess文件做到這一點:

Redirect 301 /foo http://www.example.com 

更多有關的.htaccess退房this turorial

0

與以下

RewriteRule ^foo$ http://www.%{HTTP_HOST}/ [R=301,L] 
0

它的聲音,因爲如果你需要某種廣義解的嘗試。如果是這種情況,你可以使用mod_rewrite來實現這一點,前提是你的apache已經安裝並啓用了模塊,或者你可以自己訪問apache。

這比簡單的重定向功能強大得多,但在腳下拍攝自己也更容易。

它適用於基於正則表達式重寫URL的條件和規則。

要只(並準確)重定向/ foo的你會定義:

RewriteRule ^/foo$  http://www.example.com 

這將保持低於富不變什麼,甚至/foo/index.html。

重定向以下FOO什麼,不包含子目錄欄或其他一些子目錄它會是什麼樣子:

RewriteCond %{REQUEST_URI} !^/foo/(bar|whatever|subdirectories)/ 
RewriteRule ^/foo(.*)   http://www.example.com/$1  [R=301,L] 

RewriteCond檢查指定的目錄不能在REQUEST_URI中找到並應用通用任何低於foo的重定向,如果是這樣的話; $1包含括號內的正則表達式捕獲的內容(.*)

該規則中的尾部參數[R=301,L]使其具有與給定的HTTP返回代碼301一樣的重定向,並使其成爲最後一個(L)重定向規則 - 否則應用更多規則可能會創建一些不同的結果。

http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

0

驚訝地在這裏看到這麼多的不正確的答案。您只需要使用精確的正則表達式在這裏選擇/foo並附帶可選的尾部斜槓。

您可以在DOCUMENT_ROOT/.htaccess文件中使用這樣的規則:

RedirectMatch 302 ^/foo/?$/