2014-08-27 77 views
1

我正在使用htaccess重定向過期URL列表。修復htaccess mod重寫中的正則表達式

一個

而是區分一個我試圖找到正則表達式轉換這種網址:

/gestao/contabilidade/item/2603-funções-do-departamento-financeiro.html 
/financas/item/2603-funções-do-departamento-financeiro.html 

進入這一個:

/item/2603-funções-do-departamento-financeiro.html 

所以,規則是消除'/item/'之前的所有內容 - 除了那些不包含'/item/'的URL之外。

我用RewriteRule嘗試了不同的表達式,但找不到正確的表達式。

回答

1

在你的htaccess的beggining添加此規則(在根文件夾)

RewriteEngine On 
RewriteRule ^.+/item/(.+)$ /item/$1 [R=301,L] 
+0

謝謝,但不是所有的網址都以gestao/contabilidade開頭/ - 請看我上面編輯的問題。 – 2014-08-27 15:56:00

+0

對不起,請參閱我編輯的答案,應該如你所願地工作 – 2014-08-27 15:57:27

+0

這是轉換:/gestao/item/6886-henri-fayol-pai-da-teoria-clássica-da-administração.html到:/ item/gestao – 2014-08-27 15:59:48

1

You don't a actually need mod_rewrite to do this.你可以用mod_redirect做到這一點更簡單。

RedirectMatch ^.+/item/(.+)$ /item/$1 
+0

謝謝,這是返回一個「重定向週期」錯誤 – 2014-08-27 16:01:41

+1

好,趕上,謝謝。我將編輯 - 如果我們在'/ item /'部分之前匹配* something *,它將忽略URL開頭的'/ item /'。賈斯汀的模式這樣做,現在我明白了爲什麼。 – pjmorse 2014-08-27 16:51:29