Apache返回的页面没有样式的文本和图像

时间:2013-01-09 22:48:48

标签: php html css apache

我正在处理一些我不理解的奇怪行为。

所以,如果我输入:

http://localhost/site/index.php

http服务器将返回一个没有任何问题的页面,index.php生成一个没有任何样式的页面后会出现斜杠!

http://localhost/site/index.php/

我该如何解决这个问题?

下面的CSS链接无法正常工作?

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

这适用于斜杠,但如果我在斜杠后面添加一些内容,那么我会得到没有样式的所有网站。

<link rel="stylesheet" type="text/css" href="http://localhost/site/index.php/css/fonts.css" />

编辑:

使用此功能在href上添加完整路径后,所有请求的网址都可以:

function baseUrl(){
    return ("http://".$_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']));
}

无论如何,我已经为.acccess添加了一些规则,所以现在我不能在index.php之后键入斜杠但是如果我在斜杠之后输入一些内容就会崩溃:(

4 个答案:

答案 0 :(得分:0)

Apache没有错。您的文档使用的是相对网址。

例如,您指定href="myimage.png"而不是/myimage.png

更改基本网址会破坏这些相对网址。

答案 1 :(得分:0)

这可能是您的css <link />中绝对和相对路径的问题。确保使用绝对路径。

答案 2 :(得分:0)

检查<link />前后href代码<img />属性和src代码/属性是否附加:

为:

<link rel="stylesheet" type="text/css" href="css/style.css" />
<img src="img/image.png" />

好:

<link rel="stylesheet" type="text/css" href="/css/style.css" />
<img src="/img/image.png" />

通过这种方式,您可以确定浏览器将计算正确的路径。

答案 3 :(得分:0)

这可能与您如何定义对CSS,图像等的引用有关。如果它们被定义为相对路径,您实际上可能在错误的目录中查找它们。

您可能已将Apache设置为忽略尾部斜杠(并且只提供index.php而不是在index.php目录中查找索引文件)。然而,客户端浏览器不知道这一点,并且认为它正在引用名为index.php的目录中的某些内容并查找相对于该目录的这些文件。

要解决此问题,您应该将Apache配置为不忽略尾部斜杠(并给出正确的404错误),或者实现重写规则以清除尾部斜杠。