超链接开始斜线?

时间:2010-07-14 19:25:17

标签: php html url hyperlink

在我的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 个答案:

答案 0 :(得分:3)

这真的取决于你如何构建你的网站。相对URL很棒(通过href="index.php"你正在说href="./index.php"),但是当你开始在多个目录上传播页面时它们会变得混乱。

就个人而言,我喜欢将所有相关网址都放在根目录之外,这意味着我的所有网址都以斜杠('/')开头。这样我的脚本是否在/或/ admin中并不重要,因为我将始终有一个常量引用点 - 文档根目录 - 而不是结构中的某个相对目录。

当你开始开发你希望路径可配置的大型系统时,你的第一个例子,将文档路径存储在变量中,真的开始派上用场了。例如,您可能希望系统管理员能够定义从中提取图像的位置或缓存下载的位置。

因此,请务必考虑您的用例和系统大小。

另请注意,如果您将脚本移动到另一台服务器,您的URL和目录结构可能会更改,这可能会导致严重破坏(例如,您可能将脚本移动到不同的子域,进入文档根目录,等等。)。在这种情况下,很多人会放弃Apache的mod_rewrite。

答案 1 :(得分:1)

这取决于。如果没有__BASE_URL,您的链接将相对于当前文档。在您的情况下,这意味着index.php必须与其上具有index.php链接的文件位于同一目录中。

如果您有__BASE_URL,那么无论链接文件位于何处(即不必与index.php位于同一目录中),该链接都将起作用。

另一种选择是仅使用起始斜杠。然后,您的链接将与您的域根目录相关:

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

换句话说,上述链接指向http://localhost/index.php

答案 2 :(得分:0)

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