【发布时间】:2018-07-05 00:33:09
【问题描述】:
我的虚拟主机 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。
【问题讨论】:
-
您的 SSL VirtualHost 没有定义 DocumentRoot,因此它不知道在哪里寻找 /secondary。 /secondary 仅在您的 HTTP(端口 80)虚拟主机中定义。如果您希望两者都返回相同的内容,则必须将所有配置都放在两者中。您可以将 HTTP VirtualHost 配置为始终将 301 重定向到 HTTPS,并始终通过 SSL 进行响应。
-
谢谢!实际上把所有的配置都放进去都可以。
标签: apache ssl virtualhost