ЧПУ - почему последний блок когда он в конце не работает?

Runapa

Постоялец
Регистрация
30 Окт 2010
Сообщения
63
Реакции
5
Объясните пожалуйста, почему последний блок когда он в конце не работает -

Код:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([_A-Za-z0-9-]+).([^/]+)-(.*)$ index.php?lang=$1&p=$2&page=$3 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([_A-Za-z0-9-]+)/([^/]+)$ index.php?lang=$1&p=$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/(.*)/(.*)$ index.php?lang=$1&cat=$2&p=$3 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)-(.*)$ index.php?lang=$1&cat=$2&p=$3&page=$4 [QSA,L]

а когда я переношу его в начало -

Код:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)-(.*)$ index.php?lang=$1&cat=$2&p=$3&page=$4 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([_A-Za-z0-9-]+).([^/]+)-(.*)$ index.php?lang=$1&p=$2&page=$3 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([_A-Za-z0-9-]+)/([^/]+)$ index.php?lang=$1&p=$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/(.*)/(.*)$ index.php?lang=$1&cat=$2&p=$3 [L,QSA]

, то всё работает ?
 
Если правило в конце, то оно не срабатывает, так как срабатывает следующее правило, которое находится перед ним:
Код:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/(.*)/(.*)$ index.php?lang=$1&cat=$2&p=$3 [L,QSA]
Поменяй их местами и оно будет срабатывать...

PS: кстати расшифруй, пожалуйста, эту конструкцию: [^/]+ (это сколько угодно слэшэй подряд, или что-то другое ?? )
 
PS: кстати расшифруй, пожалуйста, эту конструкцию: [^/]+ (это сколько угодно слэшэй подряд, или что-то другое ?? )

Я в этом пока мало понимаю. Нашел в инете, когда искал правила для мод реврайт.
Спасибо за подсказку.
 
Я в этом пока мало понимаю. Нашел в инете, когда искал правила для мод реврайт.
Ты бы тогда более подробно написал что тебе нужно сделать и исходный аштиаксес выложил, а то у меня есть большие подозрения насчёт правильности написания таких конструкций как
Код:
^([_A-Za-z0-9-]+).([^/]+)-(.*)$
или тут есть реальные ошибки, или я неправильно читаю:
1) от начала сколько угодно маленьких или больших букв, цифер, нижних подчеркиваний и тире
2) один любой символ
3) сколько угодно всего кроме (непонятно для меня чего, ибо такой конструкции из одного слэша в скобках я не встречал нигде). Если бы это было тире в адресе, то этот слэш был бы сэкранирован так [^\/]
4) тире
5) сколько угодно любых символов (в том числе и слэшэй)
6) конец строки (зачем он тут непонятно, ибо предыдущее правило говорит о том, что строка может содержать любое число символов, а значит закрывать её не имеет смысла)
 
Назад
Сверху