为什么Apache没有扩展名就在调用文件上执行php文件

时间:2012-04-08 08:52:50

标签: php apache apache2

今天我在服务器上发现了一件奇怪的事情。 我创建了一个php文件(test.php)并在其中编写了一些php代码。然后我用

来称呼它
http://127.0.0.1/test

并执行了“test.php”!当没有.php时,如何理解运行test.php? 我的根目录中没有htaccess文件告诉apache这样做。 我想这可能会导致安全问题。我该如何预防?

我的操作系统是ubuntu,Web服务器是Apache2。

2 个答案:

答案 0 :(得分:7)

这是因为MultiViews(它在该目录的“选项”中的某处启用)。

请点击此处:http://httpd.apache.org/docs/current/content-negotiation.html#negotiation了解其工作原理。

答案 1 :(得分:3)

检查你的apache配置(/ etc / apache2 / sites-available / [site_name或default]),它可能包含mod_rewrite指令,例如:

RewriteEngine on
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

如果你用#注释掉它们并重新启动apache,那么在不指定扩展名的情况下访问/ test应该不再有效。