Как правильно RewriteRule в htaccess?
Есть в .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, жаль. Больше пока не чего не могу подсказать.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для правильного использования 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 включает модуль 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 и требования к перенаправлениям, чтобы создать соответствующие правила.