mod_rewrite之后的$ _GET参数

时间:2014-06-18 15:24:23

标签: php apache .htaccess mod-rewrite redirect

我正在尝试使用我的.htaccess和mod_rewrite将名为download的目录中的mp3文件请求重定向到名为download.php的PHP文件。此文件生成Google Analytics请求,然后将服务器端重定向到位于files目录中的实际mp3文件。

重写应该将mp3名称指定为url参数,我可以通过$ _GET从PHP访问。但是这不起作用。

我的.htaccess看起来像这样

RewriteEngine On
RewriteRule ^.*download/(.*)\.mp3$ /download.php?url=http://static.example.com/files/$1.mp3 [QSA]

download.php文件已执行,但如果我var_dump($_GET);,则返回array(0) { }

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您很可能已启用MultiViews,请在.htaccess上使用此行禁用它:

Options -MultiViews
  • MultiViews使用选项Apache's content negotiation module,它在mod_rewrite之前运行,并使Apache服务器匹配文件扩展名。因此/file可以在网址中,但它会投放/file.php