在将站点更改为ssl secure后解析页面时从URL中删除了斜杠

时间:2016-08-17 16:28:39

标签: apache ssl

我最近让我的网站之一ssl安全。从那时起,我注意到如果我将网站上其中一个页面的网址粘贴到浏览器网址栏中,当网页尝试解析时,网址会被破坏并且找不到网页。它似乎总是在域和以下目录之后删除斜杠,所以

waynecbent.com/html/somefile.html

变为:

waynecbent.comhtml / somefile.html

起初我认为这是我的浏览器正在做的事情,但从那时起我发现这种情况发生在不同平台上的不同浏览器上。

我联系了我的域名提供商(Namecheap),但他们说这是主机的问题。

我对该网站的配置如下:

<VirtualHost *:443>
  ServerName www.waynecbent.com
  DocumentRoot /home/<redacted>/public_html
  SSLEngine on
  SSLCertificateFile "/home/<redacted>/ssl/<redacted>.crt"
  SSLCertificateKeyFile "/home/<redacted>/ssl/<redacted>.pem"
  SSLCACertificateFile "/home/<redacted>/ssl/<redacted>_bundle"
</VirtualHost>
<VirtualHost *:443>
  ServerName waynecbent.com
  DocumentRoot /home/<redacted>/public_html
  SSLEngine on
  SSLCertificateFile "/home/<redacted>/ssl/<redacted>.crt"
  SSLCertificateKeyFile "/home/<redacted>/ssl/<redacted>.pem"
  SSLCACertificateFile "/home/<redacted>/ssl/<redacted>_bundle"
</VirtualHost>

有谁知道为什么会这样?

谢谢,Allasso

2 个答案:

答案 0 :(得分:2)

与Lizardx的解决方案密切相关,我有一个Redirect指令未正确编写:

<VirtualHost *:80>
  ServerName waynecbent.com
  Redirect "/" "https://waynecbent.com"
</VirtualHost>

我需要在域后添加一个尾部斜杠:

Redirect "/" "https://waynecbent.com/"

我将接受Lizardx作为催化剂的非常丰富的答案,并认识到存在重定向。

编辑:

参考下面的Lizardx评论,您似乎可以使用Redirect指令通过以下方式进行永久重定向:

Redirect 301 "/" "https://example.com/"
Redirect permanent "/" "https://example.com/"

我还注意到,我读过的一些关于使用Redirect指令将非ssl url重定向到ssl的在线文档给出了不包含尾部斜杠的示例。但是,正如这个帖子所揭示的那样,这在我的案例中引起了一个问题。

答案 1 :(得分:1)

您的域名注册商应与此问题无关。他们将域waynecbent.com的请求发送给您的托管服务商,然后托管服务商处理请求。根据您的http标头,我认为该操作正确发生。

这个问题几乎肯定是由一个有缺陷的mod_rewrite规则引起的,所以你必须粘贴所有的htaccess或apache配置重写规则来解决这个问题。

如果你没有重写规则,那么你的主机已经搞乱了ssl处理,但这是我最后的猜测。

对网址的请求被302重定向到坏网址,这意味着你的服务器某处有重写,这是ubuntu和apache 2.2.22,所以你可以看到请求命中你的服务器,并被重定向到该不存在的URL。