在重写.htaccess上保留查询字符串

时间:2011-11-10 15:08:06

标签: php apache .htaccess mod-rewrite

我目前有一个重定向的简单重写

/photos/2

/photoviewer.php?photo=2

但是我需要能够允许用户将照片添加到他们的购物车,所以我想我需要保留查询字符串,以便以下工作。

/photos/2?action=purchase

重定向到:

/photoviewer.php?photo=2&action=purcahse

我目前的htaccess规则是:

RewriteRule ^photos/([a-zA-Z0-9_-]+)$ photoviewer.php?photo=$1 [L]

4 个答案:

答案 0 :(得分:6)

附加[QSA]标志(追加查询字符串)。

RewriteRule ^photos/([a-zA-Z0-9_-]+)$ photoviewer.php?photo=$1 [L,QSA]

答案 1 :(得分:2)

在您的规则中,将[L]替换为[L,QSA] 然后,这将保留查询信息。

希望这有帮助!

答案 2 :(得分:1)

[QSA,L]而不仅仅是[L]应该做的伎俩。希望这有帮助!

答案 3 :(得分:1)

如何扩展想法以通过“photoviewer.php”脚本的URL传递“任何”名称/值对?这是我过去使用的优雅方法。

RewriteRule  ^photos\/([^/\.\-]+)\/([^/\.\-]+)$    /photoviewer\.php\?$1=$2    [L]
RewriteRule  ^photos\/([^/\.\-]+)\/([^/\.\-]+)\/([^/\.\-]+)\/([^/\.\-]+)$    /photoviewer\.php\?$1=$2&$3=$4    [L]
RewriteRule  ^photos\/([^/\.\-]+)\/([^/\.\-]+)\/([^/\.\-]+)\/([^/\.\-]+)\/([^/\.\-]+)\/([^/\.\-]+)$    /photoviewer\.php\?$1=$2&$3=$4&$5=$6    [L]

所以,比如:

photos/photo/2/action/purchase

重写为:

photoviewer.php?photo=2&action=purchase