1

<base>就浏览器支持而言,使用html标签是否安全?或者我应该用 PHP 生成一个根路径,然后像这样添加<a href="<?=BASE?>somepage.html">somepage</a>它,它构成一个绝对 url。

使用这样的基本标签,<base href="<?=BASE?>" />然后我就可以使用这样的链接

<a href="somepage.html">somepage</a>

现在我完全意识到在不使用基本标签的情况下这样做会容易得多:

<a href="/somepage.html">somepage</a>

但是我如何使用http://localhost/testsite/的基本 URL 在本地进行测试?

编辑: 谢谢伙计们,你们让stackoverflow社区变得如此伟大:)

4

4 回答 4

1

我喜欢第一个选项,在 PHP 标签中输出一个基本目录

<a href="<?=BASE?>somepage.html">somepage</a>

最好的。这使您的站点独立于它的安装目录(您可能无法更改共享主机包上的虚拟主机设置)。如果需要,将图像文件外包给不同的服务器/子域也很容易。

<base>在浏览器支持方面使用是安全的,但出于代码可维护性的原因,我个人强烈建议不要使用它。<base>更改处理 URL 的规则;您需要牢记所有相对 URL 的基础;并且很容易被忽视。从编程的角度来看,这感觉像是一个肮脏的修复。

于 2010-04-22T18:30:57.360 回答
1

我的建议是使用以斜杠开头的绝对 URL,并设置一个/localhost/testsite/用作其文档根目录的虚拟主机。http://testsite/然后,您可以保留绝对 URL,只在本地访问您的站点。

于 2010-04-22T18:32:05.773 回答
1

您肯定已经考虑过这一点,但我想再考虑一下。如果您正在编写一个 Web 应用程序,您应该以这样一种方式构建它,以便您将来可以将它安装到任何子目录中,并且它将继续工作而几乎没有什么变化。

这意味着 href's、src's、action's 甚至 HTTP Location 标头都需要注意这种变化。这就是为什么我建议在你的 uri 前面加上<?php echo SITE_BASE ?>你想调用的任何东西。

关于 SITE_BASE 是否应该包含尾部斜杠的争论可能会很激烈。

于 2010-04-22T18:39:08.077 回答
1

两年后回到这个问题,我现在意识到处理绝对 URL 的最佳方法是将 URL 放入包装函数中,例如:

<a href="<?php echo url('/somepage.html');?>">somepage</a>

然后,包装器功能使您可以完全控制 URL 处理

function url($url){
    if(strpos($url,'/')===0){
        return 'http://localhost/testsite'.$url;
    }else{
        return $url;
    }
}
于 2012-10-02T15:02:05.300 回答