Тривиальный динамический mod_rewrite - PullRequest
0 голосов
/ 28 апреля 2011

Да, это тривиально, но можно ли заставить работать регулярные выражения? Просто нет.

Мне нужно повернуть

http://example.com/search.php?widget_id=X4234-000 

в

http://example.com/show.php?noddy_id=X4234-000

Я пытался,

RewriteRule  search\.php\?widget_id=(.+?)$ show.php?noddy_id=%1 

, а также

RewriteRule  search\.php\?widget_id=(.+?)$ show.php?noddy_id=$1 

(подсказка доктору Феллсу!)

Но безуспешно. Есть какие-нибудь указатели?

Ответы [ 2 ]

2 голосов
/ 28 апреля 2011

Вы не можете сопоставить строку запроса с RewriteRule. Для этого используйте директиву RewriteCond:

RewriteCond %{QUERY_STRING} widget_id=(.*)$ 
RewriteRule  search\.php show.php?noddy_id=%1 [L]

(Кстати,% x для групповых совпадений в cond перезаписи и $ 1 в правилах перезаписи)

В конце концов вы можете добавить QSA к флагам, если у вас есть дополнительные переменные в QueryString, которые вы хотите сохранить.

0 голосов
/ 28 апреля 2011

Действительно просто!% 1 должен быть $ 1

...