URL 重写后缺少 CSS 文件和图像

Posted

技术标签:

【中文标题】URL 重写后缺少 CSS 文件和图像【英文标题】:Missing CSS file and images after URL rewrite 【发布时间】:2012-01-03 05:12:48 【问题描述】:

我正在尝试使用模式重写使用户友好的 URL。 我的问题是,在为我的 URL 提供“名称”之类的类别后,当我使用新 URL 调用页面时,它无法加载 CSS 文件或图像。

我有一个类似的链接:

localhost/mywebsite/project?id=22

新链接类似于

localhost/mywebsite/project/22/myproject.project

ht访问代码:

RewriteRule ^project/([0-9]*)/.*\.project$ /project.php?project=$1 [L]

(它可能不是 100% 正确,但我现在无法访问我的代码,所以我只是写了这个,它在原始源上运行良好)

我的根目录是 localhost/mywebsite/

我的 CSS 文件在 css/style.css 中

localhost/mywebsite/css/style.css

我的 htaccess

localhost/mywebsite/.htaccess

我的 project.php 文件在

localhost/mywebsite/project.php

所以在项目页面中我可以使用相对路径访问 CSS 文件,

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

但是当我使用重写的 URL 页面时找不到 CSS 文件。

我不能使用绝对路径和域名,因为我还没有域名!它可以是任何东西。

一种方法是按照类似问题的建议使用域的相对路径 本地主机/mywebsite/project.php 当我在本地运行我的脚本时,我的根目录是 本地主机 所以css链接应该是这样的

href="mywebsite/css/style.css"

但是当我上线时,我应该将所有链接更改为可能类似于

href="/css/style.css"

这似乎需要很多工作

【问题讨论】:

【参考方案1】:

您必须在 connection.php 中定义基本路径或服务器视图路径,并且每当您想要该路径时,将其设为全局路径。然后将调用该变量,并且 css 或图像将采用整个路径。

例如 $SVP="http://www.example.com/"

全球 $SVP; 回声 $SVP;

所以

【讨论】:

【参考方案2】:

将图片插入到与 css href 链接具有相同相对路径的同一文件中,在浏览器中加载页面,在 Internet Explorer 中右键单击图片,单击属性,您应该会看到相对路径实际指向的位置.

【讨论】:

显然我应该在他的链接上包含 mywebsite 因为 localhost 被认为是我的根目录,而 /mywebsite/ 文件夹只是另一个目录,因此它应该包含在链接中。当我上线时,我无法更改所有链接! 您无法更改所有链接,这是可以理解的麻烦,因此请保持所有路径相对,但使用正确的相对位置调整每个路径。注意:我不是说使用绝对路径,我的意思是检查绝对路径并调整你的相对路径,直到你做对了。您可以使用 ../ 上一个文件夹。【参考方案3】:

为您的本地版本添加

<base href="//localhost/mywebsite" />

到头部

并为您的实时版本将其更改为

<base href="//your.domain.here" />

参考http://www.w3.org/TR/html4/struct/links.html#h-12.4

【讨论】:

是的,但也有图片,上线后我无法为每张图片更改域名 @max, base 标签也适用于图像。jsfiddle.net/gaby/JE656 的示例 谢谢,解决了我的头痛问题。

以上是关于URL 重写后缺少 CSS 文件和图像的主要内容,如果未能解决你的问题,请参考以下文章

Webpack:如何在 .css 中重写 URL

使用 php 和 .htaccess 进行友好的 url 重写。与 css 图像和 js 的相对链接的困难

Laravel 5 - URL 重写和 CSS 冲突

Webpack 不重写资产 url(手写笔)

IIS url 重写 - css 和 js 被错误地重写

css 根据URL的文件类型设置图标图像