Как я могу применить различные RewriteRule в .htaccess
в зависимости от количества параметров в URL? Например,Переадресация страницы htaccess по параметрам
1) Если URL-адрес имеет 1 параметр, чем он должен пойти в products.php
www.domain.com/mobile
RewriteRule ^([0-9a-zA-Z_-]+) products.php?parent=$1 [NC,L]
2) Если она имеет 2 параметра, то он должен пойти в category.php
www.domain.com/mobile/apple
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+) category.php?parent=$1&child=$2 [NC,L]
3) Если он имеет 3 параметра, то он должен идти к list.php
www.domain.com/mobile/apple/iphone6
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+) list.php?parent=$1&child=$2&subchild=$3 [NC,L]
Я новичок в .htaccess
, но как вы можете видеть, я научился писать RewriteRule, но не могу понять, что, как я могу поместить все мои выше правила в одном файле .htaccess, потому что, если я ставлю его как этот
RewriteEngine On
RewriteRule ^([0-9a-zA-Z_-]+) products.php?parent=$1 [NC,L]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+) category.php?parent=$1&child=$2 [NC,L]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+) list.php?parent=$1&child=$2&subchild=$3 [NC,L]
он запутается и вне курса, это должно быть, но как можно применить эти выше правила в зависимости от количества параметров? Надеюсь, я поставил свой вопрос достаточно ясно.
Я хотел сказать, что если бы это был вопрос программирования, чем-то вроде этого
if($countParameters = 1)
{
//Rule 1
}
else if($countParameters = 2)
{
//Rule 2
}
else if($countParameters = 3)
{
//Rule 3
}
но его .htaccess
и я не могу понять, как я могу применить свои правила в зависимости от ряда параметров.
и что это? $ Означает? –
$ означает «конец конца строки», в основном вы оцениваете все выражения, так как Regex может быть жадным, вы гарантируете, что хотите проверить все выражение –
. Вы также можете изменить порядок правил, чтобы он проверял, есть ли 3 параметра сначала, 2 секунды и только один последний; просто быть вдвойне безопасным. – CD001