让 MediaWiki 在所有页面上要求 HTTPS 的最简单方法?

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

我需要安装 MediaWiki 来要求使用 https(并拒绝正常的 http)。我花了2个小时找。设置

$wgServer
不起作用,关闭
httpd.conf
中的端口 80 也不起作用。

我的 wiki 安装在 Apache 服务器上运行。

apache https mediawiki
4个回答
8
投票

我刚刚在 Ubuntu 14 上完成了此操作(今天第一次,所以可能有更好的方法!)通过设置

$wgServer = "//myhostname.com/mediawiki";

这使得服务器名称“与协议相关”,因此它可以与 HTTP 或 HTTPS 一起使用。不过,您也许可以将其设置为 https://...。

然后配置 apache2 将所有 HTTP 流量重定向到 HTTPS:

编辑默认 SSL 配置(假设您仅使用默认站点):

sudo vim /etc/apache2/sites-available/default-ssl.conf

阅读如下内容:

# Redirect HTTP to HTTPS
<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.com

     Redirect permanent / https://example.com/
</VirtualHost>

# Normal HTTPS config for default site
<VirtualHost *:443>
     SSLEngine On
     SSLCertificateFile /etc/apache2/ssl/apache.pem
     SSLCertificateKeyFile /etc/apache2/ssl/apache.key

     ServerAdmin [email protected]
     ServerName example.com
     DocumentRoot /var/www/html/
     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

启用默认 SSL 站点(如果尚未启用)(这会创建从启用站点到可用站点的链接)

sudo a2ensite default-ssl

这假设您已经获得了 SSL 证书(我生成了一个自签名证书),该证书已放置在上面配置中引用的

/etc/apache2/ssl/apache.pem
/etc/apache2/ssl/apache.key
中。

最终让 apache 使用新配置:

sudo service apache2 restart

(或者

reload
可能就足够了)


7
投票

我的回答假设您已经有 Apache 侦听端口 443 上的 https 流量。如果情况并非如此,您需要先进行设置。根据您运行的操作系统,该过程会有所不同。


您想在 Apache 中执行此操作。在我的 Ubuntu 系统上,有一个文件

/etc/apache2/ports.conf
,其中包含以下行:

Listen 80

您将有一个包含该行的类似配置文件。删除它,并且不要忘记重新启动 Apache。


实现此目的的另一种方法是使用 MediaWiki 目录中的

.htaccess
文件,它允许更复杂的 Apache 配置(允许 HTTP 访问网站的某些部分)。试试这个:

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

1
投票

鉴于您的 Web 服务器设置为一般支持

https
,请在 MediaWiki 的
LocalSettings.php
配置文件中插入或更新以下行:

$wgForceHTTPS = true;

这会将使用

http
的所有查询重定向到
https
,并且是 Web 服务器配置中重定向规则的替代方案。

另请参阅:


0
投票

我将此代码块添加到我的 LocalSettings.php

if($_SERVER["HTTPS"]!="on") 
{
  $newurl="https://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
  header("Location: $newurl");
  exit();
}

完全符合您的要求。

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