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