我在.htaccess中有以下行:
RewriteRule ^newpdfs/(.*)\.pdf /getnewpdf.php?pdf=$1
getnewpdf.php
是一个脚本,用于将会话中的用户名添加到下载的文件名中。但是,有一种情况是尚未创建会话,并且用户的名称需要来自数据库。所以我需要传递一个ID(需要时)。我有这个:
RewriteRule ^newpdfs/(.*)\.pdf?id=(.*) /getnewpdf.php?pdf=$1&id=$2
然而我的ID查询被忽略了。我怎样才能传递查询字符串呢?
答案 0 :(得分:2)
您缺少L
(最后)标记,您将需要QSA(查询字符串追加)来附加任何现有的查询字符串。你的代码应该是这样的:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteRule ^newpdfs/([^.]+)\.pdf$ /getnewpdf.php?pdf=$1 [L,NC,QSA]
答案 1 :(得分:2)
只需将QSA
标记添加到现有规则中:
RewriteRule ^newpdfs/(.*)\.pdf /getnewpdf.php?pdf=$1 [QSA]
当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。使用[QSA]标志会导致查询字符串合并。
答案 2 :(得分:1)
将[QSA]添加到规则的末尾,这意味着附加查询字符串