我已经设置了我的子域名上的 LetsEncrypt SSL 证书,sm.webscraping.pro。然而,子域名通过 HTTPS 提供主域名 (webscraping.pro) 内容,而其自身(如预期)内容则通过 HTTP 提供。
如何使 HTTPS 请求返回子域名自己的内容而不是主域名的内容?
- 子域名源文件夹: /主页/管理员/网页/sm.webscraping.pro/public_html
- 域源文件夹: /主页/管理员/网页/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如图所示这里?