ошибка перезаписи URL-адреса htaccess

#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 означает последний. Это означает, что никакие другие правила не будут проверены после совпадения одного правила.