Как правильно RewriteRule в htaccess?

Ссылка скопирована
23 апреля 2026 1 ответ

Есть в .htaccess строка RewriteRule ^[a-zA-Z-_]+_([d]+)+.html index.php?id=$1 [L] , которая позволяет открывать страницу товара с чпу к примеру site.ru/kupim-chistye-othody_3.html открывается site.ru/index.php?id=3 , но строка не работает на адресе site.ru/RAZDEL/kupim-chistye-othody_3.html , подскажите как отредактировать RewriteRule ^[a-zA-Z-_]+_([d]+)+.html index.php?id=$1 [L] чтобы работало на адресе site.ru/razdel/kupim-chistye-othody_3.html ?

Дополнительно:

Ответы:

Если я всё правильно понял, то чтобы ваше правило RewriteRule работало на адресе site.ru/RAZDEL/kupim-chistye-othody_3.html и других подобных адресах с разделами, вам нужно добавить модификатор NC (No Case) в ваше правило RewriteRule. Модификатор NC указывает на то, что сопоставление шаблона должно быть регистро-независимым.

Вот как будет выглядеть измененное правило RewriteRule:

RewriteRule ^[a-zA-Z-_]+_([d]+)+.html index.php?id=$1 [L,NC]

Добавив модификатор NC, строка ^[a-zA-Z-_]+_([d]+)+.html будет соответствовать URL-адресам с разделами независимо от их регистра.

Теперь ваше правило RewriteRule будет работать на адресе site.ru/razdel/kupim-chistye-othody_3.html, site.ru/RAZDEL/kupim-chistye-othody_3.html и любых других адресах с разделами.

  • Не сработало :(
  • Molder84, жаль. Больше пока не чего не могу подсказать.
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Артём Dev Ответ

Для правильного использования RewriteRule в файле .htaccess необходимо учитывать несколько важных моментов. RewriteRule позволяет перенаправлять URL-адреса на сервере Apache, изменять структуру URL и выполнять другие действия связанные с маршрутизацией запросов.

Прежде всего, убедитесь, что модуль mod_rewrite включен на вашем сервере. Для этого необходимо раскомментировать или добавить строку LoadModule rewrite_module modules/mod_rewrite.so в файле httpd.conf.

Далее, создайте или откройте файл .htaccess в корневой директории вашего проекта. В этом файле вы можете использовать RewriteRule для определения правил перенаправления.

Пример правила RewriteRule для перенаправления всех запросов на index.php:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

В данном примере:
- RewriteEngine On включает модуль mod_rewrite
- RewriteBase / задает базовый путь для перенаправлений
- RewriteCond %{REQUEST_FILENAME} !-f проверяет, что запрашиваемый файл не существует
- RewriteCond %{REQUEST_FILENAME} !-d проверяет, что запрашиваемая директория не существует
- RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] перенаправляет все запросы на index.php, передавая запрашиваемый URL в качестве параметра url. Флаг [QSA] добавляет к запросу строки запроса, если она уже присутствует, а флаг [L] останавливает дальнейшее применение правил.

Таким образом, правильное использование RewriteRule в htaccess зависит от конкретных требований вашего проекта. Необходимо тщательно анализировать структуру URL и требования к перенаправлениям, чтобы создать соответствующие правила.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

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

Вам также может быть интересно