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


using mod_rewrite to redirect variables to a php file?

对于我的网站,假设我在一个名为"下载"的文件夹中有一个文件

因此该文件的直接链接将是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规则,你曾经想知道但又害怕问的一切?以获取更多示例。