今天我在服务器上发现了一件奇怪的事情。 我创建了一个php文件(test.php)并在其中编写了一些php代码。然后我用
来称呼它http://127.0.0.1/test
并执行了“test.php”!当没有.php时,如何理解运行test.php? 我的根目录中没有htaccess文件告诉apache这样做。 我想这可能会导致安全问题。我该如何预防?
我的操作系统是ubuntu,Web服务器是Apache2。
答案 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应该不再有效。