#php #.htaccess
#php #.htaccess
Вопрос:
Это мой файл htaccess:
Options FollowSymLinks
RewriteEngine on
RewriteRule ^category/(.*)/$ categories.php?cat_name=$1
RewriteRule ^category/(.*)$ categories.php?cat_name=$1
RewriteRule ^category/(.*)/([0-9]*)/$ categories.php?cat_name=$1amp;page=$2
RewriteRule ^category/(.*)/([0-9]*)$ categories.php?cat_name=$1amp;page=$2
Когда пользователь открывает эту страницу mywebsite.com/cars / он открывает первую страницу категории автомобили, которая является правильной, но когда они пишут mywebsite.co/cars/2 код $_GET['cat_name']
выводит cars/2, что неверно, потому что имя кошки — cars, а 2 — номер страницы.
Как это исправить?
Спасибо
Ответ №1:
Вам нужно отсортировать свои правила от наиболее специфичных к наименее специфичным:
RewriteRule ^category/(.*)/([0-9]*)/$ categories.php?cat_name=$1amp;page=$2 [L]
RewriteRule ^category/(.*)/([0-9]*)$ categories.php?cat_name=$1amp;page=$2 [L]
RewriteRule ^category/(.*)/$ categories.php?cat_name=$1 [L]
RewriteRule ^category/(.*)$ categories.php?cat_name=$1 [L]
И убедитесь, что другие правила не совпадают после попадания с помощью [L]
.
Комментарии:
1. Спасибо. это работает. я приму это через 10 минут. но что делает [L] ?
2. L означает последний. Это означает, что никакие другие правила не будут проверены после совпадения одного правила.