html/php:如何处理绝对url?
就浏览器支持而言,html标记使用安全吗?或者我应该用PHP生成一个根路径,然后像这样添加它,组成一个绝对urlhtml/php:如何处理绝对url?,php,html,url,anchor,root,Php,Html,Url,Anchor,Root,就浏览器支持而言,html标记使用安全吗?或者我应该用PHP生成一个根路径,然后像这样添加它,组成一个绝对url 像这样使用base标记我喜欢第一个选项,在PHP标记中输出一个base目录 <a href="<?=BASE?>somepage.html">somepage</a> 最好的。这使您的站点独立于安装它的目录,您可能无法更改共享主机包上的虚拟主机设置。如果需要,将映像文件外包到不同的服务器/子域也很容易 在浏览器支持方面使用它是安全的,但出于代码可
像这样使用base标记我喜欢第一个选项,在PHP标记中输出一个base目录
<a href="<?=BASE?>somepage.html">somepage</a>
最好的。这使您的站点独立于安装它的目录,您可能无法更改共享主机包上的虚拟主机设置。如果需要,将映像文件外包到不同的服务器/子域也很容易
在浏览器支持方面使用它是安全的,但出于代码可维护性的原因,我个人强烈建议不要使用它。更改URL处理方式的规则;您需要记住所有相关URL的基础;而且很容易被忽视。从编程的角度来看,这感觉像是一个肮脏的补丁。我喜欢第一个选项,在PHP标记中输出一个基本目录
<a href="<?=BASE?>somepage.html">somepage</a>
最好的。这使您的站点独立于安装它的目录,您可能无法更改共享主机包上的虚拟主机设置。如果需要,将映像文件外包到不同的服务器/子域也很容易
在浏览器支持方面使用它是安全的,但出于代码可维护性的原因,我个人强烈建议不要使用它。更改URL处理方式的规则;您需要记住所有相关URL的基础;而且很容易被忽视。从编程的角度来看,这感觉像是一个肮脏的补丁。我的建议是使用以斜杠开头的绝对URL,只需设置一个使用/localhost/testsite/作为其文档根的虚拟主机。然后,您可以离开绝对URL,只需访问您的站点http://testsite/ 本地。我的建议是使用以斜杠开头的绝对URL,只需设置一个使用/localhost/testsite/作为文档根的虚拟主机。然后,您可以离开绝对URL,只需访问您的站点http://testsite/ 本地。您肯定对此进行了一些思考,但我想在组合中再考虑一点。如果您正在编写一个web应用程序,那么您应该以这样一种方式构造它,即将来可以将它安装到任何子目录中,并且它将继续工作,而不会发生什么变化 这意味着href's、src's、action's甚至HTTP位置头都需要知道这样的更改。这就是为什么我建议在uri前面加上或任何你想叫它的东西
关于站点库是否应该包含尾随斜杠的争论可能会很激烈。您肯定已经对此进行了一些思考,但我想在组合中再考虑一点。如果您正在编写一个web应用程序,那么您应该以这样一种方式构造它,即将来可以将它安装到任何子目录中,并且它将继续工作,而不会发生什么变化 这意味着href's、src's、action's甚至HTTP位置头都需要知道这样的更改。这就是为什么我建议在uri前面加上或任何你想叫它的东西
关于站点库是否应该包含尾随斜杠的争论可能会很激烈。两年后回到这个问题,我现在意识到处理绝对URL的最佳方法是将URL放入包装函数中,例如:
<a href="<?php echo url('/somepage.html');?>">somepage</a>
两年后回到这个问题,我现在意识到处理绝对URL的最佳方法是将URL放入包装函数中,例如:
<a href="<?php echo url('/somepage.html');?>">somepage</a>
哦,我知道有一些简单的解决办法!如果我知道如何设置虚拟主机。。。好的,回到谷歌。但是,如果我想更改域/子域,该怎么办?无论使用什么主机名访问站点,您的链接URL都不会更改。这就是这种方法的优点。创建虚拟主机时,可以设置它将使用的主机名。如果您需要更改它,只需更改配置文件即可。有效点,现在我想我可以使用所有3种链接方法。基本链接、绝对链接和相对链接;在这种情况下,你的把戏就发挥了作用。哦,我知道有一些简单的解决办法!如果我知道如何设置虚拟主机。。。好的,回到谷歌。但是,如果我想更改域/子域,该怎么办?无论使用什么主机名访问站点,您的链接URL都不会更改。这就是这种方法的优点。创建虚拟主机时,可以设置它将使用的主机名。如果您需要更改它,只需更改配置文件即可。有效点,现在我想我可以使用所有3种链接方法。基本链接、绝对链接和相对链接;在这种情况下,你的伎俩就发挥了作用。那么你说我应该为每个链接添加一个基本目录吗?@Yuri我是这样做的,是的,但我开发的应用程序需要能够成为dep
在像/subdir/appname/index.html这样的子目录中加载,所以不是这样就是这样。你并不总是需要这个。如果您的问题仅限于本地测试环境,Jimmy简单地纠正虚拟主机的方法将很有效,但您的应用程序或站点将无法以这种方式轻松使用子目录-路径将硬编码到根目录。答案接受,这是我一段时间以来一直采用的方法,我只是认为base是减少html使用的一种方法,但似乎没有真正的出路,除非我混合使用这个和jimmys技巧。+1刚刚意识到您正在讨论子目录。我会留下我的答案,因为它包含一些可能有用的细节。@webbie是的,我想我们基本上是在表达相同的观点。但这并不伤人,因为这是一个很好的观点:那么你说我应该为每个链接添加一个基本目录?@Yuri我是这样做的,是的,但我开发的应用程序需要能够部署在子目录中,如/subdir/appname/index.html,所以要么如此,要么如此。你并不总是需要这个。如果您的问题仅限于本地测试环境,Jimmy简单地纠正虚拟主机的方法将很有效,但您的应用程序或站点将无法以这种方式轻松使用子目录-路径将硬编码到根目录。答案接受,这是我一段时间以来一直采用的方法,我只是认为base是减少html使用的一种方法,但似乎没有真正的出路,除非我混合使用这个和jimmys技巧。+1刚刚意识到您正在讨论子目录。我会留下我的答案,因为它包含一些可能有用的细节。@webbie是的,我想我们基本上是在表达相同的观点。但这并不伤人,因为这是一个很好的观点:谢谢你的回答,这让我明白了,基地不是前进的方向。谢谢你的回答,这让我明白了,基地不是前进的方向。
function url($url){
if(strpos($url,'/')===0){
return 'http://localhost/testsite'.$url;
}else{
return $url;
}
}