htaccess将子文件夹重定向到root

时间:2016-09-20 23:59:12

标签: apache .htaccess redirect mod-rewrite

这令我感到沮丧,我无法找到同样的问题,也许我只是在寻找错误。有人搞砸了,我们有一堆谷歌链接到一个不存在的子文件夹。所以我试图在htaccess中进行301重定向以对其进行排序。

问题是我似乎无法让重定向工作到多个文件夹。

实施例。 http://example.com/subfolder/someOtherFolder重定向到http://example.com/someOtherFolder就好了。

但是http://example.com/subfolder/someOtherFolder/yetAnother停留在同一页面上并返回404。

这是我整个.htaccess的最后一个变体,它会返回上述结果,除了上述内容之外,我所尝试的任何内容都没有返回。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^sitefiles/(.*)/$ /$1 [R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php
</IfModule>

帮助? (我讨厌.htaccess&gt;。&lt;)

1 个答案:

答案 0 :(得分:0)

问题在于这条规则:

RewriteRule ^sitefiles/(.*)/$ /$1 [R=301]

此规则要求在请求的URI

上显示一个斜杠

相反:

RewriteRule ^sitefiles/(.*) /$1 [R=301]

请注意,还有一个Redirect指令可用于执行简单的重定向。在你的情况下:

Redirect /sitefiles /

最后,请注意,可以用以下内容替换整个重写块:

FallbackResource /index.php

因此,最终推荐(最佳实践)配置为:

Redirect /sitefiles /
FallbackResource /index.php

而不是完全使用Rewrite。