我正忙着在我的网站上做网址重写时突然发生的事情,我真的不知道它是怎么发生的,或者这是怎么可能的,以及如何禁止这种情况发生,probaby在网址重写规则中的一些小错误尝试强制在地址前面的www,但当我删除www。然后按回车键,出现一个他无法找到的地址,因为他没有放在.nl后面
不知何故,一个额外的index.php被修复了,发生了什么,这样就可以看到整个网站没有任何css标记......:S
它是可重复的,只需在xample之间插入额外的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时。并且没有输入 疯狂发生在www。再次被迫
答案 0 :(得分:1)
您正在相对链接CSS
<link href="inc/stylesheet.css" rel="stylesheet" type="text/css">
当您访问/index.php/index.php?page=home时,浏览器会在
中查找CSS文件/index.php/inc/stylesheet.css
解决方案是:
[link href =“/ inc / stylesheet.css”rel =“stylesheet”type =“text / css”/&gt;
(替换[with&lt; :))
希望有所帮助
答案 1 :(得分:0)
它将尝试从Web服务器上的目录/index.php/
获取CSS文件,而不是按预期获取/
。这不是安全漏洞
答案 2 :(得分:0)
我不知道您的重写规则,因为您还没有发布它们,但缺少CSS的问题是因为您将HTML中的样式表和其他文件与相对路径链接,即:
<link href="inc/stylesheet.css" rel="stylesheet" type="text/css">
由于您的网址为http://www.capoeiravelsen.nl/index.php/index.php?page=home
,因此浏览器会请求位于http://www.capoeiravelsen.nl/index.php/inc/stylesheet.css
下的文件,当然,该文件在服务器上不存在。
一种解决方案是将HTML中的所有路径更改为绝对路径,即:
<link href="http://www.capoeiravelsen.nl/inc/stylesheet.css" rel="stylesheet" type="text/css">