0

我在 .htaccess 中有以下行:

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

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

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

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

4

3 回答 3

2

Just add the QSA flag to your existing rule:

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

When the replacement URI contains a query string, the default behavior of RewriteRule is to discard the existing query string, and replace it with the newly generated one. Using the [QSA] flag causes the query strings to be combined.

Further reference here: http://httpd.apache.org/docs/2.4/rewrite/flags.html

于 2013-05-31T14:51:51.890 回答
2

您缺少L(最后一个)标志,您将需要 QSA(查询字符串附加)来附加任何现有的查询字符串。你的代码应该是这样的:

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

RewriteRule ^newpdfs/([^.]+)\.pdf$ /getnewpdf.php?pdf=$1 [L,NC,QSA]
于 2013-05-31T14:51:45.460 回答
1

在规则末尾添加 [QSA] 表示附加查询字符串

于 2013-05-31T14:50:23.287 回答