【问题标题】:apache virtualhost with ssl not working on subdirectories带有 ssl 的 apache 虚拟主机无法处理子目录
【发布时间】: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


【解决方案1】:

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

您的 SSL 虚拟主机没有定义 DocumentRoot,因此它不知道在哪里寻找 /secondary。 /secondary 仅在您的 HTTP(端口 80)虚拟主机中定义。如果您希望两者都返回相同的内容,则必须将所有配置都放在两者中。

【讨论】:

    猜你喜欢
    • 2013-01-29
    • 2012-04-29
    • 2012-01-27
    • 1970-01-01
    • 2021-04-30
    • 2014-06-18
    • 2015-12-03
    • 2015-01-31
    • 1970-01-01
    相关资源
    最近更新 更多