2016-12-11 6 views
0

У меня есть небольшая проблема:Htaccess - Категория/Подкатегория/Страница

Мой URL: локальный/кошка/Категория/Подкатегория/Страница

Пример: локальный/кошка/кино/3d/7

кодекс:

RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/?$ $1.php?wq=$2 [NC,L] ## wq is Category 
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ $1.php?wq=$2&wsq=$3 [NC,L] ## wsq is Subcategory/but if no Subcategory and Pagination -> False it must be "&wpq=" 
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ $1.php?wq=$2&wsq=$3&wpq=$4 [NC,L] ## wpq is Pagination 

Мой текущий Htaccess:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^([a-z0-9\-]+)/?$ $1.php [NC,L] 

RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/?$ $1.php?wq=$2 [NC,L] ## wq is Category 
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ $1.php?wq=$2&wsq=$3 [NC,L] ## wsq is Subcategory/but if no Subcategory and Pagination -> False it must be "&wpq=" 
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ $1.php?wq=$2&wsq=$3&wpq=$4 [NC,L] ## wpq is Pagination 

RewriteCond %{REQUEST_METHOD} !POST [NC] 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R,L,NE] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^([\w.-]+)/?$ $1.php [L] 

Это работает, насколько это необходимо, только проблема, если введена только одна категория (и не подкатегория), тогда необходимо проверить, только ли номер параметра 2.

Если введены только числа, то это не подкатегория, а параметр Pagination (тогда второй параметр должен быть «wsq», а не «wsq»).

Я надеюсь, вы понимаете, что я имею в виду: D

Это может быть сделано с Php, но я думаю, что через .htaccess лучше?

Заранее спасибо уже раз.

ответ

1

Если я его заменить:

RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ $1.php?wq=$2&wsq=$3 [NC,L] 

С:

RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/(\d+)/?$ $1.php?wq=$2&wpq=$3 [NC,L] 
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ $1.php?wq=$2&wsq=$3 [NC,L] 

(\d+) (что эквивалентно ([0-9]+) или ([[:digit:]]+)) в соответствии с номером. Это новое правило более конкретное, должно быть расположено в до вашего «обычного» правила (которое ожидает буквы и/или цифры и/или тире).

+0

Спасибо, он прекрасно работает;) Но если я попал в URL, как это: HTTP: // локальной/кошка/WQ = фильм Это DonT Перепишите к HTTP: // локального/кот/фильма?/ RewriteRule^([a-z0-9 \ -] +)/([a-z0-9 \ -] +) /? $ $ 1.php? Wq = $ 2 [NC, L] – playnic

+0

Не уверен поймите: если вы хотите, чтобы '/ cat /? wq = filme' был перенаправлен на'/cat/filme', у вас в настоящее время нет правила делать это. – julp