从 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]
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]