从 htaccess 中的重定向中切断参数

Cut off parameter from redirect in htaccess

htaccess 中的静默重定向:

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

重定向 url 看起来像:

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

后如何截取任意参数

谢谢

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

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

如果您不想 mode=prev 内容包含在规则的目标中,那么您可以简单地删除 $ 而不是尝试匹配它:

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