在htaccess中切断重定向参数

时间:2015-04-14 15:13:58

标签: .htaccess redirect http-status-code-301

htaccess中的这种静默重定向:

RewriteCond %{QUERY_STRING} ^pic_id=(\d+)$ [NC]
RewriteRule ^album_showpage\.php$ /gallery/image_page.php?image_id=%1 [L]

重定向一个看起来像的网址:

example.com/album_showpage.php?pic_id=1906

为:

example.com/gallery/image_page.php?image_id=1906

效果很好。但是,当URL具有如下参数时:

album_showpage.php?pic_id=1906&mode=prev

album_showpage.php?pic_id=1906&mode=next

重定向无法正常工作。

问题:如何在pic_id = 1906之后剪切任何参数

谢谢

1 个答案:

答案 0 :(得分:1)

您需要匹配查询字符串的其余部分。

RewriteCond %{QUERY_STRING} ^pic_id=(\d+)(&.*)?$ [NC]
RewriteRule ^album_showpage\.php$ /gallery/image_page.php?image_id=%1%2 [L]

如果您不希望mode=prev内容包含在规则的目标中,那么您只需删除$而不是尝试匹配它:< / p>

RewriteCond %{QUERY_STRING} ^pic_id=(\d+) [NC]
RewriteRule ^album_showpage\.php$ /gallery/image_page.php?image_id=%1 [L]