我是 Apache 网络服务器的新手,所以我可能只是做了一些明显错误的事情。
我通过 Debian 包管理器安装了“OwnCloud”,默认情况下还会安装 Apache 网络服务器。基本安装工作正常,我可以正常使用 OwnCloud。
我现在想启用 https 连接并将所有 http 请求重定向到 https,但是我无法使重定向工作。在尝试理解和解决问题时,似乎 Apache 忽略了对配置文件的更改,例如更改默认 VirtualHost 的 DocumentRoot 不起作用。
由于它是 Debian 安装,我了解配置文件的位置与标准 Apache 安装的位置略有不同。
在sites-available
目录中我有以下内容:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/test
# ServerName <removed_for_privacy>
# Redirect permanent / https://<removed_for_privacy>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Redirect / https://<removed_for_privacy>/owncloud
</VirtualHost>
<VirtualHost <removed_for_privacy>:80>
ServerName <removed_for_privacy>
Redirect permanent /owncloud https://<removed_for_privacy>/owncloud
ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>
在上面我将服务器名称替换为<removed_for_privacy>
我还在owncloud-ssl.conf
同一个目录中创建了一个特定的文件,试图让它正常工作:
<IfModule mod_ssl.c>
<VirtualHost <removed_for_privacy>:443>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
SSLCertificateFile /etc/ssl/certs/<removed_for_privacy>.pem
SSLCertificateKeyFile /etc/ssl/certs/<removed_for_privacy>.key
</VirtualHost>
如果我手动输入,https 可以正常工作,但我想将 http 请求重定向到 https,但重定向从未发生。
另外,出于实验,我尝试将 DocumentRoot 更改为标准的子目录/var/www
,但重新启动 Apache 后,它仍然查看/var/www
其中的子目录。
任何帮助均感激不尽。
更新
我尝试删除 000-default.conf,奇怪的是 apache 继续响应 http 请求!删除这个文件后它肯定会报错/崩溃吗?我不知道它是如何配置的...
答案1
如果你使用 mod_rewrite 选项,则将以下配置添加到.htaccess文件:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
确保 httpd.conf(mod_rewrite 支持)中包含以下内容:
LoadModule rewrite_module modules/mod_rewrite.so