带有 ssl 的 apache 虚拟主机无法在子目录上工作

apache virtualhost with ssl not working on subdirectories

我的虚拟主机 SSL 配置有问题。 我的站点适用于 HTTP 和 HTTPS 的基本域 www.my_domain.com,但不适用于所有子目录。 示例:

我的虚拟主机设置如下:

<VirtualHost *:80>
 ServerAdmin my_domain@gmail.com
 DocumentRoot /var/www/html/
 ServerName www.my_domain.com
 ServerAlias my_domain.com
 ErrorLog /var/www/html/error.log

 Alias /secondary /var/www/html/secondary/
 <Directory /var/www/html/secondary/>
    Options FollowSymLinks MultiViews
    allow from all
    order allow,deny
    AllowOverride All
 </Directory>
</VirtualHost>

我的ssl.conf设置如下:

<VirtualHost _default_:443>
ServerName www.my_domain.com:443
...
SSLEngine on
SLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/httpd/ssl/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl/apache.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
    SSLOptions +StdEnvVars
</Directory>
</VirtualHost>

错误是:在此服务器上找不到请求的 URL /secondary。

因为它解决了 OP 的问题,这里是我的评论作为答案。

您的 SSL VirtualHost 没有定义 DocumentRoot,因此它不知道到哪里寻找 /secondary。 /secondary 仅在您的 HTTP(端口 80)VirtualHost 中定义。如果你想让两者 return 相同的内容,你必须将所有配置都放在两者中。