Apache2 Linux Mint URL 没有尾部斜杠,无法用于 HTTP 到 HTTPS 重定向/重写

Apache2 Linux Mint URL 没有尾部斜杠,无法用于 HTTP 到 HTTPS 重定向/重写

我在 Linux Mint 上设置了一个 Apache2 服务器。我将default-ssl网站配置为使用我购买的 SSL 证书,并且默认网站使用 SSL 运行良好。

但是当我尝试访问类似目录时,example.com/thing它会将我重定向到https://example.com:433/thing/并显示一个不可用的网站。如果我访问,example.com/thing/它会将我重定向到https://example.com/thing/,一切正常。我该如何解决这个问题?

答案1

您说的是配置试图将您发送到:

https://example.com:433/thing/

这看起来很奇怪,因为标准https端口是443而不是433。也许这就是问题所在?无论如何,我都会尝试帮助解决尾部斜杠问题。

首先,我不太清楚 Linux Mint 是如何工作的,但如果你安装了 Apache2,这个a2enmod命令应该可以启用阿帕奇mod_rewrite这是您将要进行的调整所必需的:

sudo a2enmod rewrite

如果mod_rewrite已启用,则运行该命令不会有任何影响;您只会收到一条mod_rewrite已启用的消息。无论消息是什么,请转到实际的重写规则。

因此,就尾随斜杠而言,您也可以将其添加到普通http配置中:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [L,R=301]

RewriteCond基本上是说“捕获任何没有尾随斜杠的 URL...”并且RewriteRule其后的命令实际上会通过将 URL 重写为带有斜杠来修复缺少斜杠的问题。

然后将其添加到您的普通http配置中(如果您尚未添加),以将非https流量重定向到您的https网站。

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

现在,由于您没有提供任何您正在使用的 Apache 配置示例,我不能 100% 确定这些东西会“按原样”工作,但希望它可以帮助您并让您走上解决此问题的正确道路。如果它逐字/“按原样”工作?那就太好了!

相关内容