Как настроить RewriteRule для сайта с многоуровневой структурой каталогов?

Как организовать ЧПУ на сайте с каталогом, чтобы ссылки вида mysite.ru/razdel преобразовывались в mysite.ru/index.php?a=razdel, ссылки вида mysite.ru/razdel/podrazdel в mysite.ru/index.php?a=razdel_podrazdel, а ссылки вида mysite.ru/razdel/podrazdel/tovar в mysite.ru/index.php?a=razdel_podrazdel_tovar? У меня есть правило RewriteRule для 1 уровня, но проблемы с 2 и 3 уровнем. Помогите, пожалуйста.
  • 13 декабря 2023 г. 12:47
Ответы на вопрос 1
Вы можете использовать следующие правила RewriteRule для достижения желаемого результата:

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?a=$1_$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?a=$1_$2_$3 [L]

Сначала мы проверяем, существуют ли файлы или каталоги с таким же именем, что и запрашиваемый URI. Если они не существуют, то перенаправляем запрос в index.php и передаем параметр "a" соответствующим образом.

Надеюсь, это поможет вам настроить правила RewriteRule для вашего многоуровневого сайта с каталогами.
Похожие вопросы