繁体   English   中英

htaccess 301重定向子目录更深一层 - 为什么这不起作用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM