在url中只重写一个参数

时间:2012-08-15 13:59:47

标签: apache .htaccess mod-rewrite

如何重写:

http://mystagingsite.com/website/?page_id=7&id=63&r_id=1-502ba82b9e926&event_id=1&attendee_action=post_payment&form_action=payment&type=paypal

http://mystagingsite.com/website/?page_id=102&id=63&r_id=1-502ba82b9e926&event_id=1&attendee_action=post_payment&form_action=payment&type=paypal

所以page_id参数需要更改....我需要将访问第一个网址的用户发送到第二个网址。我需要更改的是id参数......所有其他参数都需要保留。

我正在尝试这个:

RewriteRule http://mystagingsite.com/website/?page_id=7 http://mystagingsite.com/website/?page_id=102  [QSA]

但它似乎没有工作

1 个答案:

答案 0 :(得分:1)

您无法在重写规则中与查询字符串( ? 之后的所有内容)或协议/主机(http://mystagingsite.com)匹配,您将拥有在重写条件中匹配%{QUERY_STRING}%{HTTP_HOST}变量:

RewriteCond %{HTTP_HOST} mystagingsite.com [NC]
RewriteCond %{QUERY_STRING} ^(.*)page_id=7&(.*)$
RewriteRule ^website/$ /website/?%1page_id=102&%2 [L]

虽然有点混乱。在您的问题中,您说您希望page_id=7重写为page_id=102,但在您的示例中,您已将63重写为102