HTML相对URL以非标准方式运行

时间:2012-02-09 01:11:19

标签: php html .htaccess mod-rewrite

我正在尝试将客户网站移至新主机。 我移动了代码,但链接不起作用。

目录结构是

/root /About Us  
/root/Contacts

代码的格式为

<a href="/about/"><span>About Us</span></a></li>

这不应该起作用,因为/ about /中的前面的斜杠不是标准的html,但它可以工作。

<a href="/about/"应为<a href="about/" 所有hmtl都包含在index.php文件中。

原始站点托管在rackspace上,我正在我的本地apache服务器上测试代码。

是否有一些配置文件改变了相对寻址的工作方式。

2 个答案:

答案 0 :(得分:4)

要快速使其在本地服务器上运行,只需在头部添加<base>标记即可。

<base href="http://localhost/my_site_folder/" />

超链接的工作方式有以下几种:

  • (绝对)如果链接以协议开头(http://,https://, 等),您的浏览器尝试打开文字网址。

  • (root-relative)如果链接以正斜杠开头,则它会将当前域添加到url。 (如果您在www.topcompanies.com的任何地方,<a href="/about">将带您到http://www.topcompanies.com/about 如果将站点移动到子文件夹,此样式URL将失败。

  • (相对)否则,链接将被视为相对于当前“文件夹”。如果移动整个站点,此样式URL将正常工作 - 但是,如果将.html文件移动到目录结构中的不同深度,它将停止正确链接。

当您向头部添加<base>标记时,它会告诉浏览器使用该网址作为根相对网址的基础,而不是普通的http根。

答案 1 :(得分:0)

相对寻址是它的本质和绝对的。

  • 您需要对代码/ html进行批量更改,以便将hrefs按到正确的格式,或者
  • 您需要研究如何进行URI重写。在应用程序级别,通常使用.htaccess文件和mod_rewrite模块完成此操作。如有必要,请将应用移至单独的子域,然后使用基于 HTTP_HOST 过滤的vhost配置或mod_rewrite规则。

PS。我添加了相关的标签。