证书我用的是阿里云的一年免费的证书,具体怎么申请,怎么上传请访问 http://junyiseo.com/linux/363.html
后面我跟它不太一样,在vhost里面修改虚拟站点的配置之后,用http访问是到了wdcp默认的目录,而用https则是到了虚拟站点的目录
1、vi conf/httpd.conf
查找 #Include conf/extra/httpd-ssl.conf (删除行首的配置语句注释符号“#”保存退出)
2、vi conf/extra/httpd-ssl.conf
注释所有的 VirtualHost 里面的代码
这里一定要把DocumentRoot 的值修改问自己的项目目录
然后在末尾加上以上代码
<VirtualHost *:443> DocumentRoot "/www/web/smallshop/public_html" # 这个控制了https访问的目录
ServerName demo.smallshop.me:443 ServerAdmin you@example.com ErrorLog "/www/wdlinux/httpd-2.4.18/logs/error_log" TransferLog "/www/wdlinux/httpd-2.4.18/logs/access_log" SSLEngine on SSLCertificateFile /www/ssl/smallshop/public.pem SSLCertificateKeyFile /www/ssl/smallshop/213979745040220.key SSLCACertificateFile /www/ssl/smallshop/chain.pem <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "/www/wdlinux/httpd-2.4.18/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "/www/wdlinux/httpd-2.4.18/logs/ssl_request_log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
这样可以同时开启多个站点的https访问。
如果需要开启http强制跳转到https可以在.htaccess里面加上下面的代码
RewriteBase / RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
如果.htaccess不生效
-
第一:检查 apache是否开启mod_rewrite
通过php提供的phpinfo()函数查看环境配置,在"apache2handler —> Loaded Modules"里看是否有"mod_rewrite"模块,如没开启则在apache配置文件httpd.conf 中找到"#LoadModule rewrite_module modules/mod_rewrite.so"去掉前面的"#"号,重启apache即可
第二:检查apache是否支持 ".htaccess"
- 如测试中不支持".htaccess",那在apache配置文件httpd.conf 中找到"<Directory />"与"</Directory>"内的"AllowOverride None"改为"AllowOverride All",重启apache即可
如果还是不行就要用wdcp 自带的后台修改rewrite规则
如果提示SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe错误
在conf/httpd.conf里面找到LoadModule socache_shmcb_module modules/mod_socache_shmcb.so 去掉开头的#就可以了。