2014-08-27 3 views
1

Я использую htaccess для перенаправления списка устаревших URL-адресов.Исправить регулярное выражение в htaccess mod rewrite

Вместо разборчивого один за другим, я пытаюсь найти регулярное выражение, чтобы преобразовать этот вид URL-адресов:

/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/' - За исключением тех URL-адресов, которые не содержат '/item/'.

Я пробовал разные выражения, используя RewriteRule, но не смог найти правильный.

ответ

1

Добавить это правило в самого начало вашего HTAccess (в корневой папке)

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

Спасибо, но не все Urls начинаются с gestao/contabilidade/- См. Мой отредактированный вопрос выше. –

+0

Извините, пожалуйста, см. Мой отредактированный ответ, должен работать так, как вы хотите –

+0

То, что конвертирует: /gestao/item/6886-henri-fayol-pai-da-teoria-clássica-da-administração.html В:/item/gestao –

1

You don't a actually need mod_rewrite to do this. Вы можете сделать это более просто с mod_redirect.

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

Спасибо, что возвращает «цикл перенаправления» –

+1

Хороший улов, спасибо. Я отредактирую - коротко, если мы сопоставим для * что-то * перед разделом '/ item /', он будет игнорировать те, у которых '/ item /' в начале URL-адреса. Шаблон Джастина делает это, и теперь я понимаю, почему. – pjmorse