[英]htaccess 301 redirect subdirectory one level deeper - why is this not working?
这可能是一个愚蠢的问题,但我确实遇到了麻烦,如何重定向
/产品/产品/项目
这是一个简单的重定向,不需要正则表达式。 顶级站点/产品应始终重定向到/ products / item
我试过了:
<IfModule mod_rewrite.c>
RedirectMatch 301 /products(.*) /products/item/$1
</IfModule>
我收到错误,网络服务器在无限循环中重定向。 这可能是因为htaccess文件的其余部分。 看起来像这样:
# Custom Rules
<IfModule mod_rewrite.c>
RedirectMatch 301 /products(.*) /products/item/$1
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
但最奇怪的是:当我加载页面时,我收到错误。 当我然后重新加载,它的工作原理???
谢谢你的帮助! OLE
在这个表达中
RedirectMatch 301 /products(.*)/ products / item / $ 1
/products(.*)
也将匹配/products/item
,并将导致您观察到的无限重定向。
您可以尝试以下规则
#if its not already products/item, redirect to products/item
RewriteRule ^(products)/(?!item/)(.*)$ $1/item/$2 [L,NC,R=301]
将此规则放在RewriteBase /
之后
解决方案:
RedirectMatch 301 ^/products/?$ /products/item
/? 允许它匹配/ products和/ products /
RewriteCond $0 !^products/item
RewriteRule ^(products)(.*)$ $1/item$2 [L,NC,R=301]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.