.htaccess Apache从不存在的目录提供文件

jhkqcmku  于 2022-11-16  发布在  Apache
关注(0)|答案(2)|浏览(203)

我确信我在配置中的某个地方搞砸了。所以这就是正在发生的事情。
我的文档根目录没有任何名为“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>

我被难住了:

zaqlnxep

zaqlnxep1#

我怀疑在你不知道的地方有一些流氓apache2配置导致了这个问题。检查你的主/etc/apache2/apache2.conf是否有任何重写规则,也检查一下/etc/apache2/mods-enabled/rewrite.conf是否存在。

p4tfgftt

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。

相关问题