繁体   English   中英

如何使用“相对”网址?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM