@danyfir

Как в htacces сделать условие?

Всем привет! Работаю на ЧПУ. В целом, нужно преобразовывать всякие /shop/catalog?category=kurtki в /shop/catalog/kurtki . Вроде в целом разобрался как это делать, по отдельности все работает, а вот когда все вместе пишу, то ничего не работает. Я так понимаю, они конфликтуют между собой (возможно, я не прав). Пожалуйста, помогите разобраться.

Особенно проблемно себя ведет общее условие "RewriteRule ^(.*)/?$ $1.php [NC] ". Я не очень знаю регулярки (знаю, позор мне), но очень прошу помочь разобраться.

Мне кажется, к каждому условию нужна выборка (тип если в адресе есть "shop/", то делаем это...).

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^shop/(.*)/?$ /shop/tovar.php?id=$1 [L,NC]  #меняем shop/tovar.php?id=* на shop/*

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^shop/catalog/(.*)/?$ /shop/catalog.php?category=$1 [L,NC]  #меняем shop/catalog.php?category=* на shop/catalog/*

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/?$ $1.php [NC]  #открываем файл .php, если расширение не введено в адресную строку, т.е. меняем /*.php на просто /*
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
@dodo512
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^shop/catalog/(.*)$ /shop/catalog.php?category=$1 [L,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^shop/(.*)$ /shop/tovar.php?id=$1 [L]

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*)$ $1.php [L]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы