使用mod_rewrite将变量重定向到php文件?

时间:2012-02-28 20:02:03

标签: php html

对于我的网站,假设我的文件名为“download”

所以文件的直接链接是www.testing.com/download/file.exe

我想像这样抛出授权令牌,... / download / file.exe?auth = asdffg122 **,其中auth令牌是时间和到期时的哈希值。到目前为止,我已经写了一个.htaccess文件:

 RewriteEngine on
 RewriteRule \(.*)$.(exe)$ check.php?file=$1?auth=$2 [QSA]

我想将文件的名称传递给变量$ 1,并将auth令牌传递给$ 2变量。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

您可能想要或应该写的是:

RewriteRule ^(.*\.exe)$ check.php?file=$1 [QSA]

如果您将Rewriterule放入下载文件夹,则前导\反斜杠应为^起始锚点。您也可以只有一个$主题标记结束(通常)。要断言文件扩展名,请将其移到括号中。整个(.*\.exe)变为$1

使用?auth=abc22时,&auth=abc22会自动附加为[QSA]。因此添加$2变得多余。 (无论如何,你需要一个单独的RewriteCond来匹配QUERY_STRING。它不是重写路径的一部分。)

有关更多示例,另请参阅Serverfault: Everything You Ever Wanted to Know about Mod_Rewrite Rules but Were Afraid to Ask?

答案 1 :(得分:1)

像这样?

 RewriteEngine on
 RewriteCond %{QUERY_STRING} .*auth=(.*)\&*.*$
 RewriteRule ^.*\/(.*\.exe)$ check.php?file=$1&auth=%n

假设您将auth =添加到GET请求中 编辑:根据$ @ Orbling的评论进行修改