我正在处理一些我不理解的奇怪行为。
所以,如果我输入:
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之后键入斜杠但是如果我在斜杠之后输入一些内容就会崩溃:(
答案 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错误),或者实现重写规则以清除尾部斜杠。