htaccess 301重定向文件夹,但不是子文件夹

Mic*_*son 19 .htaccess redirect

我需要重定向:

http://example.com/folder

http://example.com/newfolder

但请留下:

http://example.com/folder/subfolder

在哪儿.这可能吗?如果不造成一堆重定向混乱,我似乎无法实现.

bil*_*oah 31

Jestep上面的回答重定向"/ root-directory"但无法重定向"/ root-directory /".这可以通过以下方式修复和简化:

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

这将重定向"/ folder"和"/ folder /",但保留所有子目录.

  • 比我的例子好多了. (2认同)

Jes*_*tep 5

我刚刚遇到了这个问题,这是我想出的解决方案。我更喜欢这种方法,因为它不会重定向任何子目录。

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

  • 下面比利诺亚的回答是一个更好、更清洁的解决方案。 (3认同)

Cha*_*and 5

我在这里尝试了其他方法,但取得了不同的成功。无论如何我都不是Apache专家,但这是每次都对我有用的简单的单行代码。我只是使用RedirectMatch而不是,而是使用Redirect了一个非常简单的RegEx来在结尾斜杠处或斜杠之前结束比赛,这意味着子目录永远都不能视为比赛。

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