如何使用“相对”网址?

时间:2012-11-03 15:29:44

标签: php html

我有一个疑问,在HTML文件中我有以下结构:

    MAIN -> index.php
         -> IMAGES -> image.jpg

在'img'标签中我应该使用它:

    <img src="IMAGES/image.jpg">

还是这个?

    <img src="/IMAGES/image.jpg">

请注意,在第二个示例中,我在IMAGES之前添加了斜杠。这是我的问题。

5 个答案:

答案 0 :(得分:3)

在这种情况下都可以使用,但我建议使用您的第一个选项(相对路径),因此如果将来您将整个项目移到新的根目录下,您的所有站点都将继续工作。

答案 1 :(得分:1)

两者都有效,但如果您不想移动IMAGES目录,请使用/IMAGES/image.jpg。这样会更好,因为您可以在标记中的任何位置使用相同的uri(例如,如果添加MAIN/SCRIPTS/newscript.php,则/IMAGES..将起作用,IMAGES/image.jpg则不起作用。但是,如果您始终打算将IMAGES存储为与index.php处于同一级别的目录,但您最终可能会将index.php移动到其他位置,那么您可以考虑使用IMAGES/image.jpg

答案 2 :(得分:1)

在这种情况下,它们完全相同,但请考虑这个更新的示例:

    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

答案 3 :(得分:0)

&#34;安全&#34;使用相对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

这意味着使用相对网址是危险的&#34;如果你:

1)将index.php文件移动或复制到子目录中 2)使用网址重写从您的网址中删除index.php(以及例如example.com/some/location重写为example.com/index.php?l=some/location的网址)

您最安全的选择是使用变量来获取基本网址:

define('BASE_URL', 'http://example.com');

然后在HTML中:

<img src="<?php echo BASE_URL; ?>/IMAGES/image01.jpg" alt="" />

如果将来移动您的网站,您可以更改BASE_URL常量。

答案 4 :(得分:-1)

两者都应该有效,但我建议使用斜杠。当您手动添加斜杠时,它意味着查看最顶层的目录。有了它,它意味着相对于当前文件。

如果您使用斜杠前面的方法,它允许您移动文件,或将html复制到其他文件,它们无关紧要。

在旁注中,没有斜杠称为相对路径,并且斜杠被称为绝对路径。