对于我的网站,假设我在一个名为"下载"的文件夹中有一个文件
因此该文件的直接链接将是www.testing.com/download/file.exe
我想像这样抛出一个授权令牌/下载/file.exe?auth=asdffg122**,auth令牌是时间和到期的散列。到目前为止,我已经在.htaccess文件中写道:
RewriteEngine on
RewriteRule '(.*)$.(exe)$ check.php?file=$1?auth=$2 [QSA]
我想将文件名传递给变量$1,将auth令牌传递给变量$2。有办法做到这一点吗?
这样?
RewriteEngine on
RewriteCond %{QUERY_STRING} .*auth=(.*)'&*.*$
RewriteRule ^.*'/(.*'.exe)$ check.php?file=$1&auth=%n
假设您将auth=添加到GET请求编辑:根据$@Orbling 的评论进行修改
您可能想要或应该写的是:
RewriteRule ^(.*'.exe)$ check.php?file=$1 [QSA]
如果将"重写器"放在下载文件夹中,则前导的'
反斜杠应该是^
起始锚点。您也只能有一个$
主题结束标记(通常)。要断言文件扩展名,请将其移到括号中。整个(.*'.exe)
变为$1
。
使用[QSA]
时,?auth=abc22
会自动附加为&auth=abc22
。因此添加一个$2
就变得多余了。(无论如何,您都需要一个单独的RewriteCond来匹配QUERY_STRING。它不是重写路径的一部分。)
另请参阅Serverfault:关于Mod_Rewrite规则,你曾经想知道但又害怕问的一切?以获取更多示例。