簡體   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