0

我正忙着在我的网站上进行 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. 并按下输入万维网没有发生任何疯狂的事情。只是再次被迫

4

3 回答 3

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文件:即:

[链接 href="/inc/stylesheet.css" rel="stylesheet" type="text/css" />

(将 [ 替换为 < :) )

希望能帮助到你

于 2012-04-22T12:00:20.147 回答
0

它将尝试从/index.php/您的 Web 服务器上的目录中获取 CSS 文件,而不是/像预期的那样。这不是安全漏洞

于 2012-04-22T11:58:39.323 回答
0

我不知道您的重写规则,因为您没有发布它们,但是缺少 CSS 的问题是因为您使用相对路径链接样式表和 HTML 中的其他文件,即:

<link href="inc/stylesheet.css" rel="stylesheet" type="text/css">

由于您的 URLhttp://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">
于 2012-04-22T12:03:50.787 回答