2011-05-12 117 views
0

我已经下载了一个完整的网站,将为客户升级。
我注意到代码无法找到文件(CSS,JS,图像等)。 路径编码像这样—在开头/正斜杠。 从每个href,src或其他任何地方开始删除/
解决了本地计算机上的问题,但当然会在网上混淆视听。php本地机器路径

这不会在本地工作:

href="/design/layout.css" 

这将(第一个斜线删除)

href="design/layout.css" 

什么是造成这种差异的原因吗? 是否有需要配置的某种系统变量以便让两台服务器以相同的方式处理路径?

回答

3

如果在相对URL的开头有一个/,那么它将被解析为域的Web根目录的绝对路径。

实施例绝对路径(有/开头):

在domain.com/test/other/path/test.html
href="/design/layout.css"文件

- >浏览器搜索在domain.com/design/layout.css

在域中的文件/的test.html
href="/design/layout.css" - >浏览器搜索在domain.com/design/layout.css

结论ABSOLU te路径
浏览器在同一地点搜索两次。

实施例的相对路径(无/开头):

在domain.com/test/other/path/test.html
href="design/layout.css"文件

- >浏览器搜索在domain.com/test/other/path/design/layout.css

在域中的文件/的test.html
href="design/layout.css" - >浏览器搜索在domain.com/design/layout.css

结束语相对路径
浏览器在不同地方搜索。


解决方案

您可以添加在你的.htaccess或.conf文件一Apache Alias,请求第一路径时,这会强制服务器输出的第二路径的内容。在你的情况下,Apache输出来自新路径的CSS文件,而不是/ design/。Apache的别名

Alias /design /your/new/path/design 
+0

非常感谢你 – samoyed 2011-05-13 07:14:34