.htaccess将查询字符串参数加倍

时间:2014-10-02 20:19:05

标签: php .htaccess

我正在尝试将除图像,css,javascript之外的所有请求从根目录重定向到index.php,因此用户无法直接访问.php等其他文件。

我的网站根目录中的.htaccess文件中有以下规则:

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_URI} !\.(css|js|png|jpe?g|gif|bmp|txt)$

RewriteRule ^(.*)$ index.php?url=$1 [NC,L,QSA]

在index.php中,我写了print_r($_SERVER),当我在/test下访问例如[QUERY_STRING]时,它显示了一些我不理解的内容:

array(
..
[QUERY_STRING] => url=index.php&url=test
..
)

我的问题是:为什么会发生这种情况?这是否会影响网站效果?

注意:如果我添加RewriteCond %{REQUEST_FILENAME} !-f,它只显示url=test,但这样可以直接访问文件,因此删除了此条件。

1 个答案:

答案 0 :(得分:0)

正如Cheery在评论中指出的那样,Apache正在进行多次重写。您应该将index.php添加到重写引擎应该单独留下的内容列表中:

RewriteCond %{REQUEST_URI} !index\.php$