[英]How to use “relative” URLs?
我有一个疑问,在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
,那么/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 ,那么网址IMAGES/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重写到example.com/index.php?l=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复制到其他文件,它们在哪里都无关紧要。
在旁注中,没有斜杠称为相对路径,并且斜杠被称为绝对路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.