我确信我在配置中的某个地方搞砸了。所以这就是正在发生的事情。
我的文档根目录没有任何名为“2”的文件夹。但是,如果我访问,例如,
http://www.mostpopularsports.net/2/poll.php
甚至是一些完全疯狂的网址,如:
http://www.mostpopularsports.net/2/poll.php/dsadsdsdsdsdsads
apache正在提供来自
http://www.mostpopularsports.net/2.php(但是,可以看出,图像路径等都是错误的)。
这已经造成了严重的麻烦,因为谷歌已经索引了一些疯狂的不存在的网址,由于这个问题(最有可能它爬时,我可能会改变的东西..啊..从来没有开发现场)。
这是文档根目录中的my .htaccess:
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^mostpopularsports.net [nc]
rewriterule ^(.*)$ http://www.mostpopularsports.net/$1 [r=301,nc]
Options -Indexes
这是启用站点的Apache虚拟主机配置文件:
<VirtualHost *:80>
ServerAdmin ".........@mostpopularsports.net"
ServerName mostpopularsports.net
ServerAlias www.mostpopularsports.net
CustomLog /var/log/apache2/mostpopularsports.net_access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
ErrorLog /var/log/apache2/mostpopularsports.net_error_log
DocumentRoot "/var/www/domains/mostpopularsports.net"
<Directory "/var/www/domains/mostpopularsports.net">
Options +FollowSymLinks +MultiViews
Options -Indexes
Order allow,deny
Allow from all
AllowOverride All
</Directory>
</VirtualHost>
我被难住了:
2条答案
按热度按时间zaqlnxep1#
我怀疑在你不知道的地方有一些流氓apache2配置导致了这个问题。检查你的主
/etc/apache2/apache2.conf
是否有任何重写规则,也检查一下/etc/apache2/mods-enabled/rewrite.conf
是否存在。p4tfgftt2#
我张贴这个潜在的利益,未来的游客...
今天我在处理继承的遗留站点时遇到了类似的问题。(其中
/index.php
存在于服务器上但/index.php/foo/bar
不存在)而不是返回404,如预期。$_SERVER superglobal具有$_SERVER['PHP_SELF'] = '/index.php/foo/bar
,这会导致包含<form method="POST" action="<?= $_SERVER['PHP_SELF']; ?>">
的脚本中存在XSS漏洞,因为您可以在在花了几个小时调试Apache重写规则之后,我偶然发现了AcceptPathInfo
指令。来自文件()
此指令控制是接受还是拒绝包含尾随路径名信息的请求,该尾随路径名信息跟在实际文件名(或现有目录中不存在的文件)之后。尾随路径名信息可用于PATH_INFO环境变量中的脚本。
这个Apache指令的默认值是
AcceptPathInfo Default
,这让PHP处理程序决定如何处理尾随的路径名信息。我不得不将其改为AcceptPathInfo Off
。这样做之后,对上述URL的请求将返回404。