|
|
|
| Не могу понять где здесь ошибка?
RewriteRule ^(?:([-a-zA-Z]+)[/]?)?(?:cid([0-9]+)[/]?)?$ /index.php?city=$1&cid=$2 [L,QSA]
|
| |
|
|
|
|
|
|
|
для: bb-kirpich
(06.02.2012 в 21:30)
| | Вообше-то первый раз вижу чтоб в RewriteRule использовали конструкцию (?:шаблон)
Ну если вы говорите, что во втором апаче работает, то там наверно это ввели. Сколько читал описаний мод_реврайта, все были под первый апач и нигде эта конструкция не упоминалась. Собстно не понятно зачем она вообще здесь нужна.
Кроме того, тут: [-a-zA-Z] первый дефис надо экранировать. А тут: [/]? не понятно зачем [ ].
Короче я б так написал
RewriteRule ^(([a-zA-Z\-]+)/?)?cid([\d]+)/?$ /index.php?city=$2&cid=$3 [L,QSA]
|
| |
|
|
|
|
|
|
|
для: Sfinks
(06.02.2012 в 21:58)
| | Спасибо, но выдает ошибку 404:( Не туда переадресовывает
Полный код, может еще что я натупил:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(([a-zA-Z\-]+)/?)?cid([\d]+)/?$ /index.php?city=$1&cid=$2 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([a-zA-Z\-]+)/?)?id([\d]+)/?$ /index.php?city=$1&id=$2 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([a-zA-Z\-]+)/?)?([\d]+)/?$ /index.php?city=$1&p=$2 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(([a-zA-Z\-]+)/?)?add([\d]+)/?$ /index.php?city=$1&p=add&cid=$2 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ - [R=404]
|
вообще задача такова:
/city/cid00/ = /index.php?city=city&cid=00
/city/id00/ = /index.php?city=city&id=00
/city/xxx/ = /index.php?city=city&p=xxx
/city/add00/ = /index.php?city=city&p=add&cid=00
Помогите написать условия под эту задачу. Понимаю что уровень вопроса очень плох:) Но мне нужно доделать быстро эту работу, а к следующей я уже выучу регулярные выражения:) | |
|
|
|
|
|
|
|
для: bb-kirpich
(06.02.2012 в 22:16)
| | во первых смотрите внимательнее.... Не city=$1&cid=$2 , а city=$2&cid=$3
ща дальше погляжу | |
|
|
|
|
|
|
|
для: bb-kirpich
(06.02.2012 в 22:16)
| | Во вторых в первой части РВ: выделенное жирным зачем? Разве части city/ в ссылке может не быть? Если я прально понимаю логику она должна быть всегда.
В третих
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ - [R=404]
| лучше убрать и перед RewriteEngine on вписать стандартное ErrorDocument 404 404.html
В четвертых врядли у вас когда-нибудь будут на втором уровне папки вида cid000, id000 и add000. Значит RewriteCond %{REQUEST_FILENAME} !-d в этих трех случаях не имеют смысла.
В пятых url вида /volgogradcid25, т.е. без второго и третьего слеша разве возможен? Если нет, то после слешей вопросы тоже не нужны. Хотя после третьего оставим, т.к. /volgograd/cid25 наверно допустимо.
В результате я бы написал так:
ErrorDocument 404 404.html
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^([a-zA-Z\-]+)/(c?id)([\d]+)/?$ index.php?city=$1&$2=$3 [L,QSA]
RewriteRule ^([a-zA-Z\-]+)/add([\d]+)/?$ index.php?city=$1&p=add&cid=$2 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z\-]+)/([\d]+)/?$ /index.php?city=$1&p=$2 [L,QSA]
|
| |
|
|
|