2013-05-31 59 views
0

我有以下线在.htaccess:的.htaccess需要重写规则和额外的查询字符串

RewriteRule ^newpdfs/(.*)\.pdf /getnewpdf.php?pdf=$1 

getnewpdf.php是从会话中添加用户的名称,所下载的文件名的脚本。但是,会话尚未创建且用户名需要来自数据库的情况。所以我需要传递一个ID(需要时)。我有这个:

RewriteRule ^newpdfs/(.*)\.pdf?id=(.*) /getnewpdf.php?pdf=$1&id=$2 

但是我的ID查询被忽略。我将如何去传递查询字符串呢?

回答

1

添加[QSA]将统治的结束就意味着要追加查询字符串

2

你错过L(尾)标志,您将需要QSA(查询字符串附加)追加任何现有的查询字符串。在你的代码应该是这样的:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule ^newpdfs/([^.]+)\.pdf$ /getnewpdf.php?pdf=$1 [L,NC,QSA] 
2

就在QSA标志添加到您的现有规则:

RewriteRule ^newpdfs/(.*)\.pdf /getnewpdf.php?pdf=$1 [QSA] 

当更换URI包含查询字符串,重写规则的默认行为是丢弃现有的查询字符串,并将其替换为新生成的字符串。使用[QSA]标志会导致查询字符串被合并。

此处进一步参考:http://httpd.apache.org/docs/2.4/rewrite/flags.html

相关问题