我正忙着在我的网站上进行 URL 重写,突然发生了一些事情,我真的不知道它是如何发生的,也不知道这是如何发生的,以及如何禁止这种情况发生,可能是我尝试的 URL 重写规则中的一些小错误强制地址前面的 www 但是当我删除 www 时。然后按回车,它会出现一个他找不到的地址,因为他没有在 .nl 后面加上 /
不知何故,一个额外的 index.php 在两者之间得到了修复,并且以这种方式可以在没有任何 CSS 标记的情况下看到整个网站......
它是可重现的,只需像示例一样在中间添加额外的 index.php 即可看到和浏览整个网站,而无需 CSS 文件中的任何标记
[http://www.capoeiravelsen.nl/index.php/index.php?page=home]
这里实际发生了什么?为什么不以这种方式读取 CSS 文件。当然,用户不仅要修复额外的 index.php ,而且这会带来一种安全漏洞或错误或其他什么......
[编辑]
是的,这听起来很合乎逻辑,因为它无法获取 CSS 因为它在不同的目录或其他东西中查找,但仍然不知道它如何仍然可以获取所有其他文档,因为名为 index.php 的文件夹在任何文件中都不存在方法。
它发生在这个重写规则中:
RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTP_HOST} (.*) RewriteRule (.*) http://www.%1$1 [R=301,L]
我在地址中强制使用 www,但是当一些随机的疯狂用户想要删除 www 时。并按下回车就会出现奇怪的效果。
然后请求将更改为: [http://www.capoeiravelsen.nlindex.php/?page=home] 浏览器说它当然找不到该页面
没有注意到 .php 和 ? 之间的 / 我在 .nl 和 index.php 之间放了一个 / ,所以它会变成 [http://www.capoeiravelsen.nl/index.php/?page=home] 并按下回车键
然后整个地址改为:[http://www.capoeiravelsen.nl/index.php/index.php?page=home]
可以浏览网站但没有标记的地方...
我通过将重写规则更改为:
RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
当一些随机用户会删除 www. 并按下输入万维网没有发生任何疯狂的事情。只是再次被迫