我正在尝试将除图像,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
,但这样可以直接访问文件,因此删除了此条件。
答案 0 :(得分:0)
正如Cheery在评论中指出的那样,Apache正在进行多次重写。您应该将index.php
添加到重写引擎应该单独留下的内容列表中:
RewriteCond %{REQUEST_URI} !index\.php$