费,所以现在大家都用的比较多,而目前HTTPS也是大势所趋,宝塔面板默认提供了SSL管理功能,并且可以在线申请SSL证书,一键部署HTTPS比较方便,但是遗憾的是,到目前为止,并不支持子目录开启SSL证书,也就是如果你的证书不是泛域名证书的话,只能启用www域名的https,二级域名就不新了,那么,有没有解决办法呢,答案是有的。
我们二代CMS旅游网站管理系统,最近在开发微信小程序、百度小程序、支付宝小程序的时候,小程序内要嵌入H5移动端页面,而小程序内都只支持HTTPS,HTTP是不能打开的,就碰到了这个问题,下面来说说,我们是怎么解决的(注:宝塔面板为最新版本,证书为阿里云的免费SSL证书)!
首先在阿里云给你的二级域名申请好SSL证书,然后根据你的服务器类型,把证书下载下来,如图:
然后在宝塔面板后台,把二级域名和子目录绑定好,如图所示:
绑定好了以后,解压下载的阿里云证书包,然后上传到服务器上,宝塔自带文件上传功能,直接在宝塔后台批量上传就好了,如图:
上传好了以后,返回到宝塔的网站设置界面,切换到配置文件选项,把当前的配置信息复制一下,保存到本地,本地备份一份,防止万一出错了,好快速还原 (这里很重要), 接下来,就是关键点了,把以下代码放在配置文件的最后面(按照注释修改好):
<VirtualHost *:443>
ServerAdmin webmasterexample
DocumentRoot "/www/wwwroot/二级域名/2019m/" //这里修改为你实际的子目录路径
ServerName SSL.二级域名 //这里SSL.后面修改为您二级网站的域名
ServerAlias 二级域名 //这里同上修改为您二级网站的域名
errorDocument 404 /404.html
ErrorLog "/www/wwwlogs/二级域名-error_log" //这里的域名相应的改过来
CustomLog "/www/wwwlogs/二级域名-access_log" combined //这里的域名相应的改过来
#SSL
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/二级域名/*****_public.crt //此处为重点,请把路径修改为上面证书上传的实际路径
SSLCertificateKeyFile /etc/letsencrypt/live/二级域名/*****_.key //此处为重点,请把路径修改为上面证书上传的实际路径
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
#PHP
<FilesMatch \.phpgt;
SetHandler "proxy:unix:/tmp/php-cgi-70.sock|fcgi://localhost"
</FilesMatch>
#DENY FILES
<Files ~ (\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)gt;
Order allow,deny
Deny from all
</Files>
#PATH
<Directory "/www/wwwroot/二级域名/2019m"> //这里修改为你实际的子目录路径
SetOutputFilter DEFLATE
Options FollowSymLinks
AllowOverride All
Require all granted
DirectoryIndex index.php index.html index.htm default.php default.html default.htm
</Directory>
</VirtualHost>
上面的代码,有//注释的的地方为需要根据您的实际情况要修改的地方,,其他的地方请不要做任何修改,,完成后,提交就可以了,然后使用https来访问测试效果!