我有一个疑问,在一个 HTML 文件中,我有以下结构:
MAIN -> index.php
-> IMAGES -> image.jpg
在“img”标签中我应该使用这个:
<img src="IMAGES/image.jpg">
或这个?
<img src="/IMAGES/image.jpg">
请注意,在第二个示例中,我在 IMAGES 之前添加了斜杠。这是我的问题。
在这种情况下两者都有效,但我建议使用您的第一个选项(相对路径),因此如果将来您将整个项目移动到新的根目录下,您的所有站点都将继续工作。
两者都可以,但如果您不希望移动您的 IMAGES 目录,请使用/IMAGES/image.jpg
. 这将是可取的,因为您将能够在标记中的任何位置使用相同的 uri(例如,如果您添加MAIN/SCRIPTS/newscript.php
, then/IMAGES..
将起作用,IMAGES/image.jpg
但不会)。但是,如果您始终打算将 IMAGES 存储为与 index.php 处于同一级别的目录,但最终可能会将 index.php 移动到其他位置,那么您可能会考虑使用IMAGES/image.jpg
.
在这种情况下,它们完全相同,但请考虑这个更新的示例:
MAIN -> index.php
-> ABOUT -> index.php
-> IMAGES -> image.jpg
现在,在 ABOUT/index.php 里面有一个区别,因为
<img src="IMAGES/image.jpg"> # => /ABOUT/IMAGES/image.jpg
<img src="/IMAGES/image.jpg"> # => /IMAGES/image.jpg
使用相对 URL 的“安全性”取决于您是否将在 URL 中使用子目录。
假设您的文件结构,
如果您在http://example.com/index.php,那么该 urlIMAGES/image01.jpg
将起作用。
如果您在http://example.com/somedir/index.php,则"IMAGES/image01.jpg
不会加载(它将寻找http://example.com/somedir/IMAGES/image01.jpg
而不是您的预期http://example.com/IMAGES/image01.jpg
)
这意味着在以下情况下使用相对 URL 是“危险的”:
1)将您的 index.php 文件移动或复制到子目录中 2)使用 url 重写从您的 URL 中删除 index.php(因此像 example.com/some/location 这样的 URL 重写为example.com/index.php?l=some/location
)
您最安全的选择是使用变量来获取您的基本 URL:
define('BASE_URL', 'http://example.com');
然后在您的 HTML 中:
<img src="<?php echo BASE_URL; ?>/IMAGES/image01.jpg" alt="" />
如果您将来移动您的站点,您可以更改 BASE_URL 常量。
两者都应该工作,但我建议使用斜线。当您事先添加斜杠时,这意味着在最顶层的目录中查找。没有它意味着相对于当前文件。
如果您事先使用带有斜线的方法,它允许您移动文件,或将 html 复制到其他文件,并且它们在哪里都没有关系。
附带说明一下,不带斜线的称为相对路径,带斜线的称为绝对路径。