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

RewriteRule в файле .htaccess используется для перенаправления URL-адресов на сервере. Он позволяет изменять структуру URL-адресов и управлять перенаправлениями на вашем веб-сайте.

Синтаксис RewriteRule выглядит следующим образом:

RewriteRule pattern substitution [flags]

- pattern: это регулярное выражение, которое определяет URL-адрес, который должен быть перенаправлен. Например, вы можете использовать "^products/(.*)$" для перенаправления всех URL-адресов, начинающихся с "products/".
- substitution: это новый URL-адрес, на который должен быть перенаправлен исходный URL-адрес. Например, вы можете использовать "/category/$1" для перенаправления URL-адреса "products/123" на "category/123" (где $1 соответствует значению, захваченному в регулярном выражении).
- flags (необязательно): дополнительные флаги, которые изменяют поведение RewriteRule. Например, флаг [L] указывает, что перенаправление должно быть последним и больше правил RewriteRule не должно проверяться.

Вот примеры RewriteRule с различными сценариями:

1. Простое перенаправление:
RewriteRule ^about$ /about.php [L]

Это перенаправит URL-адрес "about" на "about.php". Флаг [L] указывает, что перенаправление должно быть последним.

2. Перенаправление с захватыванием значений:
RewriteRule ^category/(.*)$ /products.php?category=$1 [L]

Это перенаправит URL-адрес "category/books" на "products.php?category=books". Захваченное значение "books" будет доступно через переменную $_GET['category'].

3. Постоянное перенаправление:
RewriteRule ^old-page$ /new-page [R=301,L]

Это выполнит постоянное перенаправление (статус 301) с URL-адреса "old-page" на "new-page". Флаг [R] указывает на перенаправление и указывает статус перенаправления.

4. Игнорирование существующих файлов и каталогов:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [L]

Это перенаправит все URL-адреса, которые не соответствуют существующим файлам и каталогам, на "index.php?page=значение". Это позволит использовать ЧПУ (человекопонятные URL) и управлять содержимым страниц через один файл (index.php).

Запомните, что RewriteRule выполняется в порядке, в котором они указаны в файле .htaccess. Если несколько правил соответствуют URL-адресу, будет использоваться первое совпадение.

Также имейте в виду, что для использования RewriteRule вам понадобится модуль mod_rewrite, который должен быть включен на вашем сервере. Если модуль не установлен или не включен, правила RewriteRule не будут работать.