将所有子目录子页面重定向到子目录根

Posted

技术标签:

【中文标题】将所有子目录子页面重定向到子目录根【英文标题】:Redirect all subdirectory child pages to subdirectory root 【发布时间】:2016-01-19 16:15:32 【问题描述】:

我试图找到上述问题的答案,但一直未能如愿。我发现的大多数示例都是将所有子目录子页面重定向到根目录,而不是重定向到子目录的根目录。

例如,我希望所有http://domain.com/subdirectory/* 都转到http://domain.com/subdirectory/ 并在.htaccess 中实现了以下重定向规则:

RewriteCond %QUERY_STRING  ^$
RewriteRule ^subdirectory/(.*)$ /subdirectory/ [R=301,NC,L]

我也试过了:

RewriteCond %QUERY_STRING  ^$
RewriteRule ^subdirectory/(.*)$ http://domain.com/subdirectory/ [R=301,NC,L]

在尝试转到http://domain.com/subdirectory 时,上述两种情况都会导致重定向循环错误——这里有什么想法或建议吗?

【问题讨论】:

【参考方案1】:

您需要在正则表达式中的目录名称后使用.+

RewriteCond %QUERY_STRING  ^$
RewriteRule ^(subdirectory)/(.+)$ /$1/ [R=301,NC,L]

否则subdirectory/.* 也匹配/subdirectory/ 并导致重定向循环。

【讨论】:

这条规则没有错,因为它适用于我的 Apache。对于 500,您应该检查您的 Apache error.log 并在此处报告错误【参考方案2】:

对我来说,答案根本不起作用,但这有:

RedirectMatch 301 ^/subdirectory/(.+)$ /subdirectory

【讨论】:

以上是关于将所有子目录子页面重定向到子目录根的主要内容,如果未能解决你的问题,请参考以下文章

使用 .htaccess 将所有子域和子目录重定向到索引页面

将所有子目录页面重定向到 .htaccess 中的新域主页

NGINX将所有子文件夹重定向到域根目录

301 将所有页面重定向到新站点 除了 1 个目录

如何重定向除登陆页面外的子目录?

htaccess 将根目录重定向到子文件夹