2014-08-27 80 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