域名未重定向至 HTTPS 版本 (Apache/Ubuntu)

域名未重定向至 HTTPS 版本 (Apache/Ubuntu)

第一次在这里发帖。我对整个网络/服务器设置世界还很陌生,所以请多多包涵!

基本上,我有一个网络论坛,一段时间以来我一直在尝试在其上实现 HTTPS。而且它确实有效,例如,如果我打开https://example.com地址栏,论坛就可以完美地运行。

但是,我的问题是,如果我只是example.com在地址栏上输入,它会默认为 http 对应项,即http://example.com

我已经阅读了很多关于如何做到这一点的指南,并且我已经添加了.htaccess重定向必要的规则(我认为)。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

我认为这是重要的部分,我认为下面的部分是论坛软件自动生成的。

RewriteRule ^forum-([0-9]+)\.html$ forumdisplay.php?fid=$1 [L,QSA]
RewriteRule ^forum-([0-9]+)-page-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2 [L,QSA]
RewriteRule ^thread-([0-9]+)\.html$ showthread.php?tid=$1 [L,QSA]
RewriteRule ^thread-([0-9]+)-page-([0-9]+)\.html$ showthread.php?tid=$1&page=$2 [L,QSA]
RewriteRule ^thread-([0-9]+)-lastpost\.html$ showthread.php?tid=$1&action=lastpost [L,QSA]
RewriteRule ^thread-([0-9]+)-nextnewest\.html$ showthread.php?tid=$1&action=nextnewest [L,QSA]
RewriteRule ^thread-([0-9]+)-nextoldest\.html$ showthread.php?tid=$1&action=nextoldest [L,QSA]
RewriteRule ^thread-([0-9]+)-newpost\.html$ showthread.php?tid=$1&action=newpost [L,QSA]
RewriteRule ^thread-([0-9]+)-post-([0-9]+)\.html$ showthread.php?tid=$1&pid=$2 [L,QSA]

RewriteRule ^post-([0-9]+)\.html$ showthread.php?pid=$1 [L,QSA]

RewriteRule ^announcement-([0-9]+)\.html$ announcements.php?aid=$1 [L,QSA]

RewriteRule ^user-([0-9]+)\.html$ member.php?action=profile&uid=$1 [L,QSA]

RewriteRule ^calendar-([0-9]+)\.html$ calendar.php?calendar=$1 [L,QSA]
RewriteRule ^calendar-([0-9]+)-year-([0-9]+)-month-([0-9]+)\.html$ calendar.php?calendar=$1&year=$2&month=$3 [L,QSA]
RewriteRule ^calendar-([0-9]+)-year-([0-9]+)-month-([0-9]+)-day-([0-9]+)\.html$ calendar.php?action=dayview&calendar=$1&year=$2&month=$3&day=$4 [L,QSA]
RewriteRule ^calendar-([0-9]+)-week-(n?[0-9]+)\.html$ calendar.php?action=weekview&calendar=$1&week=$2 [L,QSA]

RewriteRule ^event-([0-9]+)\.html$ calendar.php?action=event&eid=$1 [L,QSA]

<IfModule mod_env.c>

那么,有什么想法吗?这是域名主机配置的问题吗?非常感谢您的帮助。

答案1

将所有内容都放在 中的目的<IfModule mod_rewrite.c>是为了在未加载 mod_rewrite 模块的情况下抑制错误。因此,您可以检查的第一件事是该模块是否已加载,因为如果没有,则任何重定向都无法正常工作。不过,在大多数 Apache 安装中,它都会被加载。

另一件需要检查的事情是 .htaccess 文件是否在您的 Apache 配置中启用,以及它们是否被赋予包含任意配置(例如您在那里添加的规则)的能力。在您的 Apache 配置中查找一个AllowOverride语句。它应该设置为All。您可能需要检查相关<Directory>部分。

另一件需要检查的事情是 Apache 的错误日志,它有时可以揭示配置问题何时影响了某些东西。

相关内容