对于我的网站,假设我的文件名为“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变量。有没有办法做到这一点?
答案 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的评论进行修改