HTML相关URL以非标准的方式工作


HTML relative URLs function in non-standard way

我正试图将客户网站转移到新主机上。我移动了代码,但链接不起作用。

目录结构是

/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服务器上测试代码。

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

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

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

超链接的工作方式之一:

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

  • (相对根)如果链接以正斜杠开头,则会将当前域作为url的前缀。(如果你在www.topcompanies.com上,<a href="/about">会带你去http://www.topcompanies.com/about
    如果将网站移动到子文件夹,此样式url将失败。

  • (相对)否则,链接将被视为相对于当前"文件夹"。如果你移动整个网站,这个风格的url就会正常工作——但是,如果你在目录结构中将.html文件移动到不同的深度,它将停止正确链接。

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

相对寻址就是相对寻址,绝对寻址也是如此。任一

  • 您需要对代码.html进行大量更改,以将hrefs调整为正确的形式,或者
  • 您需要研究如何进行URI重写。在应用程序级别,这通常使用.htaccess文件和mod_rewrite模块来完成。如有必要,将应用程序移动到一个单独的子域,然后使用基于HTTP_HOST筛选的vhost-config或mod_rewrite规则

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