超链接以斜杠开头?

3

在我的php脚本中,我创建了一个常量变量来定义要放入超链接的基本url,但我真的需要这个吗?

以下是我的意思的示例。

我有这个:

 // base url is only defined once and reused throughout
 define("__BASE_URL","http://localhost/test1/");
 print '<a href="'.__BASE_URL.'index.php?var1=open/>Open</a>';

我有很多这样的内容散布在我的脚本中。

我试过这个方法,它有效:

 print '<a href="index.php?var1=open/>Open</a>';

那么这种操作方式的正确方法是什么?我注意到第二种方法甚至适用于加载图片、css和javascript文件。

3个回答

3
这实际上取决于您如何构建您的站点。 相对URL非常好(通过使用 href="index.php" 实际上是在使用 href="./index.php"),但当您开始将页面扩展到多个目录时,它们可能会变得混乱。
个人而言,我喜欢基于根目录来设置所有相对URL,这意味着我的所有URL都以斜杠('/')开头。 这样,无论我的脚本在 / 或 /admin 中,我始终有一个恒定的参考点 - 文档根目录,而不是结构中的某个相对目录。
您的第一个示例,在变量中存储文档路径,当您开始开发希望路径可配置的大型系统时,真的非常方便。 例如,也许您希望系统管理员能够定义从哪里提取图像或缓存下载等。
因此,请仔细考虑您的用例和系统大小。
还要记住,如果您将脚本移动到另一台服务器,则您的URL和目录结构可能会更改,这可能会引起混乱(例如,您的脚本可能会移动到不同的子域,进入文档根目录等)。 在这种情况下,很多人会使用Apache的mod_rewrite。

1

这要看情况。如果没有__BASE_URL,你的链接将相对于当前文档。在你的情况下,意味着index.php必须和包含index.php链接的文件在同一个目录中。

如果有__BASE_URL,那么链接将无论其所在文件位置如何都能正常工作(即不必与index.php在同一目录中)。

另一个选择是只使用起始斜杠。然后你的链接将相对于你的域名根目录:

print '<a href="/index.php?var1=open/>Open</a>';

换句话说,上面的链接将指向{{link1:http://localhost/index.php}}。

0

听起来你的问题是关于绝对URL和相对URL的区别。你是想要可移植性吗?通常最好使用相对URL,特别是如果你计划在测试环境中工作,然后将文件转移到生产环境。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接