2012-02-08 86 views
0

它可能是一個愚蠢的問題,但我有真正的麻煩搞清楚,如何htaccess 301重定向子目錄更深一層 - 爲什麼這不起作用?

/產品重定向到/產品/項目

這是一個簡單的重定向,沒有正則表達式的需要。頂層網站/產品應該只是始終重定向到/產品/項目

我想:

<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

回答

1

解決方案之後:

RedirectMatch 301 ^/products/?$ /products/item 

的/?允許它匹配兩個/產品和/產品/

1

在此表達

RedirectMatch 301 /products(.*)/產品/項目/ $ 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 /

+0

謝謝,這是有道理的。但有了這個規則,我將以/ products /重定向到/ products/item/item – 2012-02-08 14:20:00

+0

@ole_berlin你測試過了哪個網址?或者你猜測這會是結果? – 2012-02-08 14:22:35

+0

嘿,我測試的網址是/ products,結果是/ products/item/item – 2012-02-08 14:23:58

0
RewriteCond $0 !^products/item 
RewriteRule ^(products)(.*)$ $1/item$2 [L,NC,R=301]