我如何301重定向子文件夹及其后的所有内容?

时间:2017-05-04 03:16:56

标签: .htaccess magento redirect

我正在尝试将子文件夹及其后的任何内容重定向到主页。

例如:

example.com/subfolder/extra-stuff> example.com

extra-stuff不断更改并自动生成,因此我希望重定向也能将其删除。

我正在使用:

Redirect 301 /subfolder(.*) http://www.example.com

但是,这会产生http://www.example.com/extra-stuff

如果/subfolder(and anything else after subfolder)重定向到家,有没有办法可以说?

感谢您的任何建议!

1 个答案:

答案 0 :(得分:0)

Redirect指令使用简单的前缀匹配,匹配后的所有内容都复制到目标URL的末尾(这是您在此处看到的)。但是Redirect也不支持正则表达式,因此最后一个类似(.*)的模式严格无效。

您需要使用RedirectMatch代替(也是mod_alias的一部分),它使用正则表达式,而不是前缀匹配。

例如:

RedirectMatch 301 ^/subfolder http://www.example.com/

启动的任何请求 /subfolder都不会被重定向到http://www.example.com/

在测试之前,您需要清除浏览器。

您标记了您的问题“Magento”(可能正在使用mod_rewrite)。但是,您应该注意,如果您已经使用mod_rewrite进行重写/重定向,那么您可能应该使用mod_rewrite而不是mod_alias来执行此重定向,因为您可能会发生冲突。

例如,等效的mod_rewrite指令是:

RewriteRule ^subfolder http://www.example.com/ [R=301,L]

请注意RewriteRule 模式上没有斜杠前缀。这需要靠近.htaccess文件的顶部。