Apache2 https 不断将(301)重定向到 http

Apache2 https 不断将(301)重定向到 http

尽管我已经使用 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:感谢您花时间回复。您的建议让我的思维朝着正确的方向思考正确的事情,之后故障排除很顺利。

相关内容