Перезаписываемые переменные Apache - PullRequest
1 голос
/ 27 февраля 2012

Apache Mod-Rewrite, у меня проблема, а не ошибка как таковая, но следующее делает и $ 1, и $ 2 равными $ 1, т. Е. 'Survey'

RewriteRule ^((survey|quiz|form|widget))/create$ items/create/?type=$1 [L]
RewriteRule ^((survey|quiz|form|widget))/([0-9]+)/edit$ items/edit/?type=$1&id=$2 [L]
RewriteRule ^((survey|quiz|form|widget))/([0-9]+)/delete$ items/delete/?type=$1&id=$2 [L]
RewriteRule ^((survey|quiz|form|widget))/([0-9]+)/results$ items/results/?type=$1&id=$2 [L]
RewriteRule ^((survey|quiz|form|widget))/([0-9]+)/reliability$ items/reliability/?type=$1&id=$2 [L]
RewriteRule ^((survey|quiz|form|widget))/([0-9]+)/publish$ items/publish/?type=$1&id=$2 [L]

Так что это похоже на

/widget/45657/publish

перейдет на

/items/publish/?type=widget&id=widget

Вместо

/items/publish/?type=widget&id=45657

Заранее спасибо.

1 Ответ

1 голос
/ 28 февраля 2012

Почему две круглые скобки? Это объяснит вашу проблему.

Попробуйте это:

RewriteRule ^(survey|quiz|form|widget)/create$ items/create/?type=$1 [NC,QSA,L]
RewriteRule ^(survey|quiz|form|widget)/([0-9]+)/edit$ items/edit/?type=$1&id=$2 [NC,QSA,L]
RewriteRule ^(survey|quiz|form|widget)/([0-9]+)/delete$ items/delete/?type=$1&id=$2 [NC,QSA,L]
RewriteRule ^(survey|quiz|form|widget)/([0-9]+)/results$ items/results/?type=$1&id=$2 [NC,QSA,L]
RewriteRule ^(survey|quiz|form|widget)/([0-9]+)/reliability$ items/reliability/?type=$1&id=$2 [NC,QSA,L]
RewriteRule ^(survey|quiz|form|widget)/([0-9]+)/publish$ items/publish/?type=$1&id=$2 [NC,QSA,L]

Кстати, вы могли бы оптимизировать свои правила с помощью чего-то близкого к:

RewriteRule ^(survey|quiz|form|widget)/create$ items/create/?type=$1 [NC,QSA,L]
RewriteRule ^(survey|quiz|form|widget)/([0-9]+)/(edit|delete|results|reliability|publish)$ items/$3/?type=$1&id=$2 [NC,QSA,L]

Разве это не короче? ;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...