Как составить регулярку для RewriteRule?
Не могу разобраться, как составить регулярку для htaccess? Нужно в ссылках символ "_" менять на "-" Я сделал так:
RewriteRule ^(.*)_(.*) /$1-$2 [L,R=301]
но проблема в том, что в ссылках на скачивание в именах файлов, также меняется символ "_" на "-" из-за чего возникает ошибка 404
Как написать регулярку правильно, чтоб имена файлов не обрабатывались?
Ответы (1 шт):
RewriteRule ^((?!.*\.(zip|rar)$).*)$ /$1 [N]
RewriteRule ^(.*)_(.*)$ /$1-$2 [L,R=301]
Первое правило RewriteRule проверяет, не заканчивается ли запрошенный URL-адрес на «.zip» или «.rar», используя отрицательный просмотр вперед, и если оно истинно, следующее правило не применяется. Второй RewriteRule соответствует любой строке, содержащей символ подчеркивания, и заменяет ее дефисом и перенаправлением. Необходимые расширения файлов для исключения можете добавить самостоятельно разделив вертикальной прямой |.