超链接开始斜杠?
在我的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文件。
这取决于。没有__BASE_URL,您的链接将与当前文档相关。在你的情况下,这意味着index.php必须与具有index.php链接的文件在同一个目录中。
如果您有__BASE_URL,那么无论其包含文件位于何处(即不必与index.php位于同一目录中),该链接都可以工作。
另一种选择是仅使用起始斜线。那么你的链接将是相对于你的域根:
print '<a href="/index.php?var1=open/>Open</a>';
换句话说,上面的链接将指向http://localhost/index.php。
这听起来像你的问题是关于绝对与相对URL。你想要可移植性吗?通常最好使用相对URL,特别是如果您计划在测试环境中工作,然后再将文件传输到生产环境。
这真的归结为你如何构建你的网站。相对URL非常好(通过做href="index.php"
你真的在说href="./index.php"
),但是当你开始将页面分布到多个目录时,它们可能开始变得混乱。
个人而言,我喜欢将所有相对URL都放在根目录下,这意味着我的所有URL都以斜杠('/')开头。这样,无论我的脚本是在/还是/ admin,这都没关系,因为我将始终有一个常量参考点 - 文档根目录 - 而不是结构中的某个相对目录。
您的第一个例子是,将文档路径存储在变量中,当您开始开发您希望路径可配置的较大系统时,它真的开始派上用场。例如,也许你希望你的系统管理员能够定义从哪里获取图像,或者缓存下载的位置。
所以真的考虑你的用例和系统的大小。
另外请记住,如果您曾经将脚本移动到另一个服务器,您的URL和目录结构可能会更改,这可能会造成严重破坏(例如,您可能会将脚本移动到不同的子域中)等)。在这种情况下,很多人都会放弃Apache的mod_rewrite。