当使用 HTTPS 时,子域名会返回主域名内容

当使用 HTTPS 时,子域名会返回主域名内容

我已经设置了我的子域名上的 LetsEncrypt SSL 证书,sm.webscraping.pro。然而,子域名通过 HTTPS 提供主域名 (webscraping.pro) 内容,而其自身(如预期)内容则通过 HTTP 提供。

如何使 HTTPS 请求返回子域名自己的内容而不是主域名的内容?

  1. 子域名源文件夹: /主页/管理员/网页/sm.webscraping.pro/public_html
  2. 域源文件夹: /主页/管理员/网页/webscraping.pro/public_html

/etc/httpd/conf/httpd.conf文件:

<VirtualHost *:80>
  DocumentRoot /home/admin/web/sm.webscraping.pro/public_html/public
  ServerName sm.webscraping.pro 
</VirtualHost>

<VirtualHost *:443>
  ServerName sm.webscraping.pro
  DocumentRoot /home/admin/web/sm.webscraping.pro/public_html/public

  SSLEngine On
  SSLCertificateFile /etc/dehydrated/certs/sm.webscraping.pro/cert.pem
  SSLCertificateKeyFile /etc/dehydrated/certs/sm.webscraping.pro/privkey.pem
  SSLCertificateChainFile /etc/dehydrated/certs/sm.webscraping.pro/fullchain.pem
</VirtualHost>

然而,还有另一个“VirtualHost 定义”文件/home/admin/conf/web/sm.webscraping.pro.httpd.ssl.conf内容如下:

<VirtualHost 185.221.154.249:443>

    ServerName sm.webscraping.pro
    ServerAdmin [email protected]
    DocumentRoot /home/admin/web/sm.webscraping.pro/public_html/public

    ScriptAlias /cgi-bin/ /home/admin/web/sm.webscraping.pro/cgi-bin/
    Alias /vstats/ /home/admin/web/sm.webscraping.pro/stats/
    Alias /error/ /home/admin/web/sm.webscraping.pro/document_errors/
    #SuexecUserGroup admin admin
    CustomLog /var/log/httpd/domains/sm.webscraping.pro.bytes bytes
    CustomLog /var/log/httpd/domains/sm.webscraping.pro.log combined
    ErrorLog /var/log/httpd/domains/sm.webscraping.pro.error.log
    <Directory /home/admin/web/sm.webscraping.pro/public_html>
        AllowOverride All
        SSLRequireSSL
        Options +Includes -Indexes +ExecCGI
        #php_admin_value open_basedir /home/admin/web/sm.webscraping.pro/public_html:/home/admin/tmp
        php_admin_value upload_tmp_dir /home/admin/tmp
        php_admin_value session.save_path /home/admin/tmp
    </Directory>
    <Directory /home/admin/web/sm.webscraping.pro/stats>
        AllowOverride All
    </Directory>
    SSLEngine on
    SSLVerifyClient none
    SSLCertificateFile /home/admin/conf/web/ssl.sm.webscraping.pro.crt
    SSLCertificateKeyFile /home/admin/conf/web/ssl.sm.webscraping.pro.key
    SSLCertificateChainFile /home/admin/conf/web/ssl.sm.webscraping.pro.ca

    <IfModule mod_ruid2.c>
        RMode config
        RUidGid admin admin
        RGroups apache
    </IfModule>
    <IfModule itk.c>
        AssignUserID admin admin
    </IfModule>

    IncludeOptional /home/admin/conf/web/shttpd.sm.webscraping.pro.conf*
</VirtualHost> 

从 VH 文件可以看出,文档根目录参数映射到.../sm.webscraping.pro/public_html/public文件夹,而不是主域文件夹。那有什么问题

.htaccess项目根文件夹中的文件,/主页/管理员/网页/sm.webscraping.pro/public_html

<IfModule mod_rewrite.c> 
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

如何使 HTTPS 请求返回子域自己的内容而不是主域的内容?

我应该使用从 HTTPS 重定向到 HTTP如图所示这里

相关内容