2016-10-19 2 views
0

Ситуация: многие страницы на веб-сайте были «подняты на уровень», например..htaccess regex redirects - как устранить ключевое слово?

www.example.com/all-widgets/red-widgets/widget001 теперь www.example.com/red-widgets/widget001

Проблема: многие устаревшие ссылки, которые включают в себя ныне прекратившей свое существование/все-виджетов/категорию.

Что такое синтаксис regex to удалить ключевое слово из ID?

Другими словами, «Если входящий URL-адрес включает в себя это ключевое слово, удалить только это ключевое слово, но оставить остальную часть URL интактной».


Последующие меры: могут возникнуть ситуации, когда ключевое слово должно быть точным, матч 1-времени, так как это может произойти в другом месте в URL.

Другими словами, это вероятность того, что входящий URL, как это могло бы существовать:

www.example.com/all-widgets/red-widgets/widget074-compatible-with-all-widgets

Мне нужно удалить только 1- появление «все-виджетов» (исправить категорию -migration), но оставим неповрежденным (поэтому он не нарушает фактический URL-адрес продукта/блога).

ответ

0

следующее регулярное выражение будет отделить ведущий all-widgets от вашего URL ^all-widgets/(.+)$. Вы можете добавить правило перезаписи на основе того, как вы хотите, чтобы маршрут остального: например,

RewriteRule ^all-widgets/(.+)$ $1 
+0

Запросы разъяснений: так, синтаксис 'RewriteRule^(все-виджеты \ /) (. +) $ $ 2' перепишет' www.example.com/all-widgets/red -widgets/widget001' to 'www.example.com/red-widgets/widget001'? Или мне нужно добавить что-нибудь еще? – TomJones999

+0

Я немного обновил свой ответ. Пожалуйста, проверьте. Да, он перепишет ваш URL, как вы упомянули. Если, тогда на вашем веб-сервере существует новый путь, вы не должны добавлять что-либо еще. Однако он не перенаправляется на новый URL-адрес, поэтому ваши пользователи все равно будут видеть старый URL-адрес. –

+0

Он не будет работать в случаях, когда URL-адрес не начинается с 'all-widgets'. – anubhava

0

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

RewriteEngin On 
RewriteBase/

RewriteRule ^(?:|(.*?)/)all-widgets(/.*|)$ $1$2 [L,R=301,NE,NC] 

RegEx Demo

Смежные вопросы