将站点更改为 ssl 安全后解析页面时,斜杠从 URL 中删除

问题描述 投票:0回答:2

我最近对我的一个网站进行了 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>

有谁知道这是为什么吗?

apache ssl
2个回答
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
投票

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

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

如果您没有重写规则,那么您的托管服务商已经搞乱了 ssl 处理,但这将是我最后的猜测。

对 url 的请求被 302 重定向到错误的 url,这意味着您的服务器上的某处正在进行重写,该服务器是带有 apache 2.2.22 的 ubuntu,因此您可以看到请求到达您的服务器,并被重定向到该服务器不存在的网址。

© www.soinside.com 2019 - 2024. All rights reserved.