我正试图将客户网站转移到新主机上。我移动了代码,但链接不起作用。
目录结构是
/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。我添加了相关的标签。