2011-11-10 130 views
2

我现在有一个简单的重写重定向保留在重写查询字符串的.htaccess

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

回答

6

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

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

感谢赫然快速反应!我会接受计时器让我的时间。 – Max

2

在您的规则,与[L,QSA]更换[L]
然后将保留查询信息。

希望这会有所帮助!

+0

其中L表示Last,即如果规则匹配,则不要看其他规则。 – stivlo

1

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

1

只要扩展想法,将URL通过“any”名称/值对传递给photoviewer.php脚本,该如何呢?这是我过去使用的一种优雅的方法。

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