我需要安装 MediaWiki 来要求使用 https(并拒绝正常的 http)。我花了2个小时找。设置
$wgServer
不起作用,关闭 httpd.conf
中的端口 80 也不起作用。
我的 wiki 安装在 Apache 服务器上运行。
我刚刚在 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
可能就足够了)
我的回答假设您已经有 Apache 侦听端口 443 上的 https 流量。如果情况并非如此,您需要先进行设置。根据您运行的操作系统,该过程会有所不同。
您想在 Apache 中执行此操作。在我的 Ubuntu 系统上,有一个文件
/etc/apache2/ports.conf
,其中包含以下行:
Listen 80
您将有一个包含该行的类似配置文件。删除它,并且不要忘记重新启动 Apache。
.htaccess
文件,它允许更复杂的 Apache 配置(允许 HTTP 访问网站的某些部分)。试试这个:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
鉴于您的 Web 服务器设置为一般支持
https
,请在 MediaWiki 的 LocalSettings.php
配置文件中插入或更新以下行:
$wgForceHTTPS = true;
这会将使用
http
的所有查询重定向到 https
,并且是 Web 服务器配置中重定向规则的替代方案。
另请参阅:
我将此代码块添加到我的 LocalSettings.php
if($_SERVER["HTTPS"]!="on")
{
$newurl="https://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
header("Location: $newurl");
exit();
}
完全符合您的要求。