相对链接可能由php进行不同的解释

时间:2017-01-02 13:09:05

标签: url webserver

在我网站上的a标签中,我将它们设置为:

<a href="/home"></a>

这在我的测试服务器上工作正常,这是http,但是当我将我的网站推送到生产服务器(https)时,它会导致“此网站无法访问页面”。我发现通过在末尾添加一个/来修改标签:

<a href="/home/"></a>

使其有效。我认为这可能是由于PHP或服务器解释我的相对链接的方式。任何人都可以告诉我为什么这些没有/最终的链接可以在http而不是在https上工作?还有一些方法我可以修改这个服务器端而不必经过并添加/到所有链接的末尾?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试通过编辑.htaccess来自动更正此问题,如下所示:

#declared once at top of htaccess file.
RewriteEngine On    

#if is a directory
RewriteCond %{REQUEST_FILENAME} -d
#enforce a trailing slash to the directory given
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

这样可行,但我不确定服务器设置中操作的顺序优先级;在允许您的帐户.htaccess使用URI之前,亚马逊系统可能正在检查它是否是文件夹。

但上述意思是:

www.yoursite.com/index.php

www.yoursite.com/home

将由服务器处理为:

www.yoursite.com/index.php

www.yoursite.com/home/ 
 --> and so will load the default index file from this directory, not shown to browser 
  --> www.yoursite.com/home/index.php