如何使用htaccess将%{THE_REQUEST}传递给php文件

时间:2015-06-18 15:50:28

标签: php regex .htaccess mod-rewrite

我正在尝试使用PHP工作并有一个小问题的下载系统。

我的htaccess文件中有这个:

RewriteEngine on
RewriteRule ^.*$ process.php?%{THE_REQUEST}

我是这样的网址:

/download/path1/path2/some file name.pdf

在我的php中,$ _GET看起来像这样:

Array
(
    [GET_/download/path1/path2/some_file_name_pdf?q] => somevalue HTTP/1.1
)

这很好用,我可以用空格替换下划线,一切运行良好。问题是,当文件名实际上有一个下划线时,因为我用一个空格替换下划线,因为大多数文件在名称中都有空格。只有少数文件在名称中实际上有一个下划线,这是我无法改变的。

这是问题所在:

/download/path1/path2/some_file_name.pdf

在我的php中,$ _GET看起来像这样:

Array
(
    [GET_/download/path1/path2/some_file_name_pdf?q] => somevalue HTTP/1.1
)

有没有办法用htaccess将%{THE_REQUEST}中的空格替换为某些字符(如〜)或字符序列(如__)或类似的东西?

1 个答案:

答案 0 :(得分:2)

您已经传递了它,但只是不要使用$ _GET。试试这个。

RewriteEngine on
RewriteRule . /process.php [L,NE]

然后在PHP中

print_r($_SERVER["REQUEST_URI"]);

然后你可以在/上爆炸。