首页 > 解决方案 > Apache:未找到带有 HTTPS 的 URL

问题描述

我网站上的每个请求都被重定向到一个特定的 PHP 文件 (handle.php)。这适用于 HTTP 请求,但当我在 URL 中强制使用 HTTPS 时则不行。

这有效(HTTP): http: //my.domain.com/myrequest

这有效(HTTPS): https ://my.domain.com/handle.php (对特定文件的每个请求都可以在 HTTPS 中正常工作)

这不起作用(HTTPS): https ://my.domain.com/myrequest (404 Not Found)

简而言之,当我强制使用 HTTPS 并尝试发出需要重定向到 handle.php 的请求时会出现问题。

起初我认为不允许 HTTPS 请求,但正如您在请求特定文件时看到的那样,它工作正常,所以我认为重定向存在问题。

.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^ handle.php [L]
</IfModule>

虚拟主机配置

NameVirtualHost *:80
<VirtualHost *:80>
        ServerAdmin admin
        ServerName my.domain.com
        ServerAlias my.domain.com
        DocumentRoot /data/www/my.domain.com/docroot/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /data/www/my.domain.com/docroot/>
                Options FollowSymLinks MultiViews
                AllowOverride All
                Require all granted
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options ExecCGI MultiViews SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog /data/www/my.domain.com/logs/error.log
        LogLevel warn
        CustomLog /data/www/my.domain.com/logs/access.log combined
        ServerSignature On
</VirtualHost>
NameVirtualHost *:443
<VirtualHost *:443>
        ServerName my.domain.com
        DocumentRoot /data/www/my.domain.com/docroot/
        SSLEngine on
        CustomLog /data/www/my.domain.com/logs/ssl-access.log combined
        ErrorLog /data/www/my.domain.com/logs/ssl-error.log
        SSLCertificateFile /data/www/my.domain.com/certs/cert.crt
        SSLCertificateKeyFile /data/www/my.domain.com/certs/cert.key
        <Directory /data/www/my.domain.com/docroot/>
                Require all granted
                Options FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>

标签: apache.htaccesshttpshttp-status-code-404

解决方案


推荐阅读