我在.htaccess中有下面这一行:
RewriteRule ^newpdfs/(.*)\.pdf /getnewpdf.php?pdf=$1
getnewpdf.php
是一个脚本,用于将会话中的用户名添加到下载的文件名中。但是,有一种情况是,会话尚未创建,并且用户名需要来自数据库。所以我需要传递一个ID (在需要的时候)。我有这个:
RewriteRule ^newpdfs/(.*)\.pdf?id=(.*) /getnewpdf.php?pdf=$1&id=$2
但是,我的ID查询被忽略了。我该如何传递一个查询字符串呢?
发布于 2013-05-31 14:51:45
您缺少L
(最后一个)标志,您将需要QSA (查询字符串追加)来追加任何现有的查询字符串。你的代码应该是这样的:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteRule ^newpdfs/([^.]+)\.pdf$ /getnewpdf.php?pdf=$1 [L,NC,QSA]
发布于 2013-05-31 14:51:52
只需将QSA
标志添加到现有规则中:
RewriteRule ^newpdfs/(.*)\.pdf /getnewpdf.php?pdf=$1 [QSA]
当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。使用QSA标志会导致组合查询字符串。
在这里进一步引用:http://httpd.apache.org/docs/2.4/rewrite/flags.html
发布于 2013-05-31 14:50:23
将QSA添加到规则末尾,意思是追加查询字符串
https://stackoverflow.com/questions/16860055
复制相似问题