@vatrikovsky

Почему не работает регулярное выражение для mod_rewrite в .htaccess?

Имеются некие страницы с адресами вида /dir1/dir2/page_name_123.html, их надо перенаправлять средствами mod_rewrite на /dir1/dir2/page_name.html

Правило должно работать для все страниц в /dir1/dir2, содержащих на конце от одной до трех цифр и имеющих расширение "html".

Код получился навскидку такой (не относящееся к делу вырезал):
# ...
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
# ...

RewriteCond %{REQUEST_URI} ^/dir1/dir2/(.+)_[0-9]{1,3}\.html$
RewriteRule /dir1/dir2/(.+)_[0-9]{1,3}\.html$ http://sitename.ru/dir1/dir2/$1.html [L,R=301]


Помогите разобраться, что не так? На синтаксис не жалуется, mod_rewrite включен и успешно отрабатывает остальные запросы, но конкретно этот не дает ничего.

Заранее прошу прощения, если ошибка дилетантская, но что-то я туплю.

P. S. В нагрузку — стоит ли (.+) заменить чем-то вроде (^/)+ для отсечения поддиректорий? По факту их в структуре нет, но мало ли, вдруг появятся.
  • Вопрос задан
  • 2657 просмотров
Решения вопроса 1
kompi
@kompi
nullstack devoops
У меня заработало без 1-го слэша в rewriterule:
RewriteRule dir1/dir2/(.+)_[0-9]{1,3}\.html$
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vatrikovsky Автор вопроса
Спасибо, сработало!

Правда, в чем причина такого, я не понял. Буду копать документацию дальше, главное, срочная задача решена.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы