htaccess rewrite URL — убираем часть URL’a

Вчера столкнулся с проблемой - сделать редирект на URL, в котором удалена часть пути. Т.к. необходимость в написании редиректов, ранее не возникала, мой опыт состоял из 3 самых банальных правил:

  1. перенаправление на домен без www
  2. перенаправление со старого домена на новый
  3. перенаправление для RSS на FeedBurner


Итак, начнем...
Исходный URL: http://example.com/ru/title
Целевой URL: http://example.com/title

Задачка показалась очень похожей на правило №1 из моего большого опыта и я накидал вот такое правило:

RewriteCond %{REQUEST_URI} ^ru/(.*)$ [NC]<br />
RewriteRule ^ru/(.*)$ http://example.com/$1 [L,R=301]

Как и ожидалось, этот гусь не взлетел. Добавил в регэксп лидирующие слэши:

RewriteCond %{REQUEST_URI} ^/ru/(.*)$ [NC]<br />
RewriteRule ^/ru/(.*)$ http://example.com/$1 [L,R=301]

... и этот гусь остался там же.

Не буду долго мучать историей с курением документации, поиском в гуглах и яндексах. Может где-то и не дочитал, все-таки дело было почти ночью. 🙂

Утро вечера мудренее
©русская народная пословица

Сегодня утром, буквально через 5 минут, все заколосилось:

RewriteCond %{REQUEST_URI} ^/ru/(.*)$ [NC]
RewriteRule ^ru/(.*)$ http://example.com/$1 [L,R=301]

лидирующий слэш нужен только в регэкспе RewriteCond, а в RewriteRule он не нужен.

p.s. В принципе можно обойтись и одним RewriteRule, но насколько это правильно я не знаю (надо будет полистать доку).

1 Комментарий

  1. Александр

    Спасибо!

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *