尽管我已经使用 Apache 多年,但我对 Apache 的 https 和 SSL 还是很陌生。为了进行测试,我执行了一些在互联网上找到的 openssl 命令来生成用于 Apache 的自签名证书。当我遇到https://我的域名第一次访问 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>
答案1
您是否在此网站上安装了 CMS 或博客软件(例如 WordPress)?许多此类系统使用 301 重定向将您定向到首选主机名(带有 www)或重写 URL 以用于 SEO/永久链接目的。
如果您正在运行 CMS,请禁用永久链接/ SEO 优化,如果仍然遇到问题,请使用 .htaccess 的内容更新您的问题,并让我们知道网站正在运行什么(或者它是否是纯 HTML 等)
编辑:既然您已确定重定向仅发生在 PHP 网站内,而不发生在任何通用 PHP 或 HTML 文件中,那么您可以搜索 PHP 代码以查找执行此操作的位置。搜索“ header(
”,您可能会找到它。
答案2
我找到了代码的相关部分,并做了一些调整。我的问题现在解决了;这根本不是服务器配置问题,只是一些错误的 PHP 代码。@Dave Forgac:感谢您花时间回复。您的建议让我的思维朝着正确的方向思考正确的事情,之后故障排除很顺利。