Как составить регулярку для RewriteRule?

Рейтинг: 0Ответов: 1Опубликовано: 12.01.2023

Не могу разобраться, как составить регулярку для htaccess? Нужно в ссылках символ "_" менять на "-" Я сделал так:

RewriteRule ^(.*)_(.*) /$1-$2 [L,R=301]

но проблема в том, что в ссылках на скачивание в именах файлов, также меняется символ "_" на "-" из-за чего возникает ошибка 404

Как написать регулярку правильно, чтоб имена файлов не обрабатывались?

Ответы

▲ 0
RewriteRule ^((?!.*\.(zip|rar)$).*)$ /$1 [N]
RewriteRule ^(.*)_(.*)$ /$1-$2 [L,R=301]

Первое правило RewriteRule проверяет, не заканчивается ли запрошенный URL-адрес на «.zip» или «.rar», используя отрицательный просмотр вперед, и если оно истинно, следующее правило не применяется. Второй RewriteRule соответствует любой строке, содержащей символ подчеркивания, и заменяет ее дефисом и перенаправлением. Необходимые расширения файлов для исключения можете добавить самостоятельно разделив вертикальной прямой |.