尽管我已经使用 Apache 多年,但我对使用 Apache 的 https 和 SSL 还是很陌生。为了测试,我执行了一些在 Internet 上找到的 openssl 命令,以生成用于 Apache 的自签名证书。当我第一次点击https://mydomain URL 时,我收到了有关证书的浏览器警告,这是预期的。在我的浏览器中接受证书后,似乎所有 https URL 都重定向到具有 301 的 http 等效项。
我无法确定为什么。有什么线索吗?我在公共目录的根目录中有一个 .htaccess 文件,但我认为这不是原因(没有提到 https)。
这是 Gentoo Linux,Apache 2.2.11。
这是我的 Apache 配置的一部分。其中大部分只是 Gentoo 的 Apache 默认安装所附带的。
<IfDefine SSL>
<IfDefine SSL_DEFAULT_VHOST>
<IfModule ssl_module>
Listen 443
NameVirtualHost *:443
<VirtualHost *:443>
ServerName mydomain.com
Include /etc/apache2/vhosts.d/default_vhost.include
ErrorLog /var/log/apache2/mydomain.com.ssl.errors
CustomLog /var/log/apache2/mydomain.com.ssl.log combined
<IfModule log_config_module>
TransferLog /var/log/apache2/ssl_access_log
</IfModule>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/apache2/ssl/mydomain.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/mydomain.com.key
SSLOptions StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/localhost/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
SSLProtocol all -SSLv2
<IfModule setenvif_module>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</IfModule>
<IfModule log_config_module>
CustomLog /var/log/apache2/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</IfModule>
RewriteEngine On
DocumentRoot "/var/www/mydomain.com/public"
<Directory "/var/www/mydomain.com/public">
SSLRequireSSL
Options Indexes FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
</IfModule>
</IfDefine>
</IfDefine>
您是否在此站点上安装了 CMS 或博客软件(例如 WordPress)?许多此类系统使用 301 重定向将您定向到首选主机名(带有 www)或重写 URL 以用于 SEO/永久链接。
如果您正在运行 CMS,请禁用永久链接/SEO 优化,如果您仍然遇到问题,请使用 .htaccess 的内容更新您的问题,并让我们知道网站上正在运行什么(或者如果它是纯 HTML 等)。 )
编辑:既然您已经确定重定向只发生在 PHP 站点内,而不是任何通用 PHP 或 HTML 文件,您可以搜索 PHP 代码以了解它在哪里执行此操作。搜索“
header(
”,您可能会找到它。我找到了代码的相关部分,并进行了一些调整。我的问题现在解决了;这根本不是服务器配置问题,只是一些错误的 PHP 代码。@Dave Forgac:感谢您抽出宝贵时间回复。您的建议让我对正确的事情朝着正确的方向思考,之后故障排除进展顺利。