Ограничить перенаправление страниц с помощью файла htaccess

Я хочу перенаправить некоторые страницы моего сайта.

Эти страницы имеют следующую форму: xxxx.html (x= цифра, до 4 цифр), например, 1.html, 24.html, 6875.html и т. Д. Я хочу перенаправить эти страницы в следующий формат: index.php? Id = XXXX.

Решение, которое я уже применил, - это следующая строка в файле htaccess:

RewriteRule ([0-9]+)\.html$ /index.php?id=$1  [R=302,QSA,L]

Перенаправление работает отлично, но проблема в том, что я хочу ограничить это правило для страниц, содержащих до 4 цифр, например, 6789.html, 234.html. Например, я не хочу, чтобы правило применялось к странице 55555.html.

1 ответ

Решение

Это, вероятно, то, что вы ищете:

RewriteEngine on
RewriteRule ^/?([0-9]{1,4})\.html$ /index.php?id=$1  [R=302,QSA,L]

Этот слегка измененный шаблон будет работать в конфигурации хоста http-серверов, а также в файлах динамической конфигурации (.htaccess файлы стилей).


И общий совет: вам всегда следует размещать такие правила внутри конфигурации хоста http-серверов, а не использовать файлы динамической конфигурации (".htaccess"). Эти файлы, как известно, подвержены ошибкам, их трудно отлаживать, и они действительно замедляют работу сервера. Они предоставляются только в качестве последнего варианта для ситуаций, когда у вас нет контроля над конфигурацией хоста (читай: действительно дешевые поставщики услуг хостинга) или если у вас есть приложение, которое полагается на написание своих собственных правил перезаписи (что является очевидным кошмаром безопасности)).

Другие вопросы по тегам