在 sementic URL 中使用 '/' 作为分隔符是否总是需要绝对路径



我们对mod_rewrite和语义URL不熟悉,尽管研究了Google和SO,但我们仍然无法找到这个问题的明确答案。

当我们在.htaccess中使用正斜杠作为分隔符时,html中的所有图像,css和js引用都必须从相对路径重写为绝对路径。

例如:

RewriteRule ^([A-Za-z0-9-]+)/?$ inhalt.php?ebene1=$1 [NC,L] # process ebene1
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ inhalt.php?ebene1=$1&ebene2=$2 [NC,L] # process ebene1,2
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ inhalt.php?ebene1=$1&ebene2=$2&ebene3=$3 [NC,L] # process ebene1,2,3

意味着必须重写:

<link href="css/acssfile.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/ajsfile.js"></script>
<img src="imgs/animage file.gif" alt="" />

自:

<link href="http://www.oursite.com/css/acssfile.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://www.oursite.com/js/ajsfile.js"></script>
<img src="http://www.oursite.com/imgs/animage file.gif" alt="" />

这是否总是在语义URL中使用正斜杠作为分隔符的结果,或者有没有办法保留我们的相对路径?

浏览器正在解析相对于其所在 URL 的 CSS 包含。如果您的 URL 从 inhalt.php 更改为 foobar/ ,则浏览器现在位于不同的路径中。当它在/inhalt.php上时,相对路径css/acssfile.css解析为/css/acssfile.css。但是,当它在 /foobar/ 上时,该相对路径解析为 /foobar/css/acssfile.css

最好

使用绝对路径,但不要使用包含域的绝对 URL。因此,链接到您的资产文件:

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

您可能可以保持相对于站点根目录的资源路径:/css/acssfile.css,这样您就不必关心显示的实际页面的路径...

最新更新