奇怪的PHP行为

时间:2012-04-22 11:53:49

标签: php

我正忙着在我的网站上做网址重写时突然发生的事情,我真的不知道它是怎么发生的,或者这是怎么可能的,以及如何禁止这种情况发生,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。再次被迫

3 个答案:

答案 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

解决方案是:

  1. 修复重写因此不允许在php文件后使用“/”(这样操作系统会查找名为“index.php”的文件夹
  2. 绝对地链接CSS文件: 即:
  3.   

    [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">