2011-10-26 216 views

回答

3

我只是碰到了這一點,這是我想出了一個解決方案。我更喜歡這種方法,因爲它不會重定向任何子目錄。

RewriteCond %{REQUEST_URI} ^/root-directory[/]? 
RewriteCond %{REQUEST_URI} !^/root-directory/+[/]? 
RewriteRule (.*) http://www.example.com/ [R=301,L] 
+2

billynoah的答案在下面是一個更好和更乾淨的解決方案。 – Jestep

+0

我想只將家重定向到另一個網站。不是子頁面。 'example.com'到'newsite.com' –

3

可能:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/folder[/]? 
RewriteCond %{REQUEST_URI} !^/folder/subfolder[/]? 
RewriteRule (.*) /newfolder/$1 [R=301,L] 

1

您正在使用哪個服務器這應該重定向/文件夾/ newfolder,但離開了/文件夾/子文件夾? 例如,你可以使用mod_rewrite,如果你使用Apache,做這樣的事情

RewriteEngine On 
    RewriteOptions Inherit 
    RedirectMatch permanent ^/folder/$ http://example.com/newfolder 
    #I haven't tested the above redirect btw^

,並把那在你的/文件夾/目錄下的.htaccess文件(假設你可以改變apache的設置,這意味着你可以選擇設置AllowOverride所有在虛擬主機)

這裏有更多的一些信息http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

+1

這是最好的答案,因爲人們可以從在Apache vhost.conf文件的虛擬主機使用。我測試了它,它工作。謝謝,cyph3r! –

27

Jestep上面的答案重定向「/ root-directory」,但無法重定向「/ root-directory /」。這可以是固定的,簡化通過簡單:

RewriteCond %{REQUEST_URI} ^/folder[/]?$ 
RewriteRule (.*) /newfolder [R=301,L] 

這將重定向「/文件夾」和「/文件夾/」,而是獨自離開所有子目錄。

+1

比我的例子好得多。 – Jestep

+1

@PrabuGuna - 你應該搜索堆棧溢出 - 如果無法找到答案張貼它作爲一個問題。 – billynoah

1

我已經嘗試過其他方法,混合成功。我無論如何都不是Apache專家,但這裏是每次爲我工作的簡單單線程。我只是使用RedirectMatch而不是Redirect,並且包含一個非常簡單的RegEx,以便在尾部斜線處或之前結束匹配,這意味着子目錄不應該被視爲匹配。

RedirectMatch 301 ^/folder[/]?$ /newfolder

相關問題