我最近对我的一个网站进行了 SSL 安全保护。从那时起,我注意到,如果我将网站上某个页面的 URL 粘贴到浏览器 URL 栏中,当该页面尝试解析时,该 URL 会被破坏,并且找不到该页面。它似乎总是删除域和以下目录后面的斜杠,所以
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>
有谁知道这是为什么吗?
与 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 的在线文档给出了不包含尾部斜杠的示例。然而,正如该线程所揭示的,这在我的案例中引起了问题。
您的域名注册商应该与此问题无关。他们向您的托管服务商发送对域 waynecbent.com 的请求,然后由托管服务商处理该请求。根据您的 http 标头,我相信该操作正确发生。
这个问题几乎肯定是由有缺陷的 mod_rewrite 规则引起的,因此您必须粘贴所有 htaccess 或 apache 配置重写规则来解决该问题。
如果您没有重写规则,那么您的托管服务商已经搞乱了 ssl 处理,但这将是我最后的猜测。
对 url 的请求被 302 重定向到错误的 url,这意味着您的服务器上的某处正在进行重写,该服务器是带有 apache 2.2.22 的 ubuntu,因此您可以看到请求到达您的服务器,并被重定向到该服务器不存在的网址。