立即注册找回密码
 

慧之家

[discuz开发] discuz X3.4开启https访问全站ssl加密访问IIS设置证书安装方法

[复制链接]

368

主题

1331

帖子

1164

热度值

 任何值得你去的地点都没有捷径只有努力! 

最佳原创年度贡献荣誉管理优秀版主突出贡献灌水之王宣传达人推广达人热心会员活跃会员最佳新人论坛元老

发表于 2019-3-8 13:58:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册  

x
discuz X3.4版本已经全面支持https访问咯,设置相当简单,discuz X3.4开启全站https访问比起之前的3.3或3.2及更老的版本就方便多了,敢写discuz官方升级啊。ssl加密访问可以让网站更加完全,不过在一些设置上可能你和我一样也会遇到一些小麻烦,不过没关系,分享一下我的经验。

discuz X3.4可以直接开启https访问,不需要修改代码,只要配置好久行,我使用的是Windows server 2008 r2操作系统,IIS7.5版本。首先你需要获得ssl加密的证书文件,证书哪里有,这个看你在哪里买的了,目前腾讯云和阿里云都有免费证书,可以去申请,不过也可以买付费的证书,证书自己去搞了,弄到了证书以后就是安装证书,https证书安装方法请参考这一篇关于证书的安装详解:

windows server 2008  IIS7/7.5/8导入证书CA ssl证书安装绑定域名方法
https://www.dfbazhu.com/thread-1744-1-1.html


discuz X3.4开启https访问全站ssl加密访问IIS设置证书安装方法,慧之家
                               
登录/注册后可看大图





安装好了证书以后,输入带https的域名访问你的论坛,是不是可以了呢?不,还没有完成,还需要登录网站后台,在全局---站点信息 里面将网站URL原来的没有https加上,下图所示:
discuz X3.4开启https访问全站ssl加密访问IIS设置证书安装方法,慧之家
                               
登录/注册后可看大图





然后在后台 站长---UCenter设置---UCenter访问地址,将原来的网址加上https,下图所示:
discuz X3.4开启https访问全站ssl加密访问IIS设置证书安装方法,慧之家
                               
登录/注册后可看大图







在进入后台---UCenter---应用管理---点击论坛的链接“编辑”,下图所示
discuz X3.4开启https访问全站ssl加密访问IIS设置证书安装方法,慧之家
                               
登录/注册后可看大图




仍然是把原来的网址加上https,下图所示
discuz X3.4开启https访问全站ssl加密访问IIS设置证书安装方法,慧之家
                               
登录/注册后可看大图






这样设置完成以后就可以,网站站大部分的链接默认页都变成https开头了,而且浏览器上面也会湿绿色的安全提示呢。但是还有一个地方有问题,那就是用户如果使用不带https的网址访问网站,此时不会自动跳转到ssl加密的https的网址上;同时点击网站logo的链接也是没有https的!此时点击网站的logo链接会跳转到没有ssl加密的非https链接,解决方法是使用URL重写的方法,URL重写可以保证不论用户是在浏览器地址栏输入不带https的网址或者点击了不带https的链接都能自动跳转到带有https的网址上面,因为很多网站可能都开启URL伪静态吧,进入你的论坛网站的跟目录,找到web.config文件打开,查找代码:
  1. </defaultDocument>
  2.         <rewrite>
  3.             <rules>
复制代码
在上面代码的后面添加如下代码:
  1. <rule name="HTTP to HTTPS redirect" stopProcessing="true">
  2. <match url="(.*)" />
  3. <conditions>
  4. <add input="{HTTPS}" pattern="off" ignoreCase="true" />
  5. </conditions>
  6. <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
  7. </rule>
复制代码



这样配置就完成了。下面是web.config的完整文件,红色部分就是上面添加的,其他是URL重写规则:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3.     <system.webServer>
  4.         <defaultDocument>
  5.             <files>
  6.                 <add value="index.php" />
  7.                 <add value="default.php" />
  8.             </files>
  9.         </defaultDocument>
  10.         <rewrite>
  11.             <rules>

  12. <rule name="HTTP to HTTPS redirect" stopProcessing="true">
  13. <match url="(.*)" />
  14. <conditions>
  15. <add input="{HTTPS}" pattern="off" ignoreCase="true" />
  16. </conditions>
  17. <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
  18. </rule>

  19.                 <rule name="Imported Rule 1">
  20.                     <match url="^topic-(.+)\.html$" ignoreCase="false" />
  21.                     <conditions logicalGrouping="MatchAll">
  22.                         <add input="{QUERY_STRING}" pattern="^(.*)$" ignoreCase="false" />
  23.                     </conditions>
  24.                     <action type="Rewrite" url="portal.php?mod=topic&topic={R:1}&{C:1}" appendQueryString="false" />
  25.                 </rule>
  26.                 <rule name="Imported Rule 2">
  27.                     <match url="^article-([0-9]+)-([0-9]+)\.html$" ignoreCase="false" />
  28.                     <conditions logicalGrouping="MatchAll">
  29.                         <add input="{QUERY_STRING}" pattern="^(.*)$" ignoreCase="false" />
  30.                     </conditions>
  31.                     <action type="Rewrite" url="portal.php?mod=view&aid={R:1}&page={R:2}&{C:1}" appendQueryString="false" />
  32.                 </rule>
  33.                 <rule name="Imported Rule 3">
  34.                     <match url="^forum-(\w+)-([0-9]+)\.html$" ignoreCase="false" />
  35.                     <conditions logicalGrouping="MatchAll">
  36.                         <add input="{QUERY_STRING}" pattern="^(.*)$" ignoreCase="false" />
  37.                     </conditions>
  38.                     <action type="Rewrite" url="forum.php?mod=forumdisplay&fid={R:1}&page={R:2}&{C:1}" appendQueryString="false" />
  39.                 </rule>
  40.                 <rule name="Imported Rule 4">
  41.                     <match url="^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$" ignoreCase="false" />
  42.                     <conditions logicalGrouping="MatchAll">
  43.                         <add input="{QUERY_STRING}" pattern="^(.*)$" ignoreCase="false" />
  44.                     </conditions>
  45.                     <action type="Rewrite" url="forum.php?mod=viewthread&tid={R:1}&extra=page\%3D{R:3}&page={R:2}&{C:1}" appendQueryString="false" />
  46.                 </rule>
  47.                 <rule name="Imported Rule 5">
  48.                     <match url="^group-([0-9]+)-([0-9]+)\.html$" ignoreCase="false" />
  49.                     <conditions logicalGrouping="MatchAll">
  50.                         <add input="{QUERY_STRING}" pattern="^(.*)$" ignoreCase="false" />
  51.                     </conditions>
  52.                     <action type="Rewrite" url="forum.php?mod=group&fid={R:1}&page={R:2}&{C:1}" appendQueryString="false" />
  53.                 </rule>
  54.                 <rule name="Imported Rule 6">
  55.                     <match url="^space-(username|uid)-(.+)\.html$" ignoreCase="false" />
  56.                     <conditions logicalGrouping="MatchAll">
  57.                         <add input="{QUERY_STRING}" pattern="^(.*)$" ignoreCase="false" />
  58.                     </conditions>
  59.                     <action type="Rewrite" url="home.php?mod=space&{R:1}={R:2}&{C:1}" appendQueryString="false" />
  60.                 </rule>
  61.                 <rule name="Imported Rule 7">
  62.                     <match url="^blog-([0-9]+)-([0-9]+)\.html$" ignoreCase="false" />
  63.                     <conditions logicalGrouping="MatchAll">
  64.                         <add input="{QUERY_STRING}" pattern="^(.*)$" ignoreCase="false" />
  65.                     </conditions>
  66.                     <action type="Rewrite" url="home.php?mod=space&uid={R:1}&do=blog&id={R:2}&{C:1}" appendQueryString="false" />
  67.                 </rule>
  68.                 <rule name="Imported Rule 8">
  69.                     <match url="^archiver/(fid|tid)-([0-9]+)\.html$" ignoreCase="false" />
  70.                     <conditions logicalGrouping="MatchAll">
  71.                         <add input="{QUERY_STRING}" pattern="^(.*)$" ignoreCase="false" />
  72.                     </conditions>
  73.                     <action type="Rewrite" url="archiver/index.php?action={R:1}&value={R:2}&{C:1}" appendQueryString="false" />
  74.                 </rule>
  75.                 <rule name="Imported Rule 9">
  76.                     <match url="^([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$" ignoreCase="false" />
  77.                     <conditions logicalGrouping="MatchAll">
  78.                         <add input="{QUERY_STRING}" pattern="^(.*)$" ignoreCase="false" />
  79.                     </conditions>
  80.                     <action type="Rewrite" url="plugin.php?id={R:1}:{R:2}&{C:1}" appendQueryString="false" />
  81.                 </rule>
  82.             </rules>
  83.         </rewrite>
  84.         <httpErrors defaultResponseMode="File">
  85.             <remove statusCode="404" subStatusCode="-1" />
  86.             <error statusCode="404" prefixLanguageFilePath="" path="404.html" responseMode="File" />
  87.         </httpErrors>
  88.     </system.webServer>
  89. </configuration>
复制代码

最后把网站logo地方不是https的链接也修改成带有https的链接,打开discuz论坛根目录template/default/common/header.htm文件,查找以下代码(约125行左右):
  1. ['default']}http://{$_G['setting']['domain']['app']['default']}/{else}./{/if}" title="$_G['setting']['bbname']">{$_G['style']
复制代码
将上面代码中的http://修改为https://,这样全站修改就全部完毕了。


全站默认都是https加密访问的了,网站不需要修改任何代码,只要配置好就没有问题。如果使用https访问浏览器上面任然还有感叹号可以卸载discuz X3.4的云平台(怎么卸载?升级或安装的时候官方有说明呢)。完毕。




最后还有一点问题,那就是不带www的网址也要自动跳转到带www且有https的网址上面,这个大家可以看看你原来的不带www的网址是怎么自动跳转到带www域名上面的。我的方法是解析不带www的域名到一个名为301的文件夹,完后在301这个文件夹里面创建一个名为“web.config”的文件(下图)并打开:
discuz X3.4开启https访问全站ssl加密访问IIS设置证书安装方法,慧之家
                               
登录/注册后可看大图






在web.config文件里面输入以下代码:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3.     <system.webServer>
  4.         <httpRedirect enabled="true" destination="https://www.dfbazhu.com/" exactDestination="false" childOnly="false" httpResponseStatus="Permanent" />
  5.         <defaultDocument>
  6.             <files>
  7.                 <add value="index.php" />
  8.                 <add value="default.php" />
  9.             </files>
  10.         </defaultDocument>
  11.         <httpErrors>
  12.             <remove statusCode="404" subStatusCode="-1" />
  13.             <error statusCode="404" prefixLanguageFilePath="" path="404.html" responseMode="File" />
  14.         </httpErrors>
  15.     </system.webServer>
  16. </configuration>
复制代码
将其中的网址修改为你的网址即可,在没有添加https之前,是没有https的网址,使用了ssl证书加密后就是在原来网址上加上https,让不带www的网址默认直接跳转到带有https并且是加了www的域名上面。这样问题就全部解决了,打开看看浏览器上是不是有绿色小锁了,我的就是这样设置的,不过有个别的帖子的网址会显示感叹号,发现是因为有站外的非https的链接在帖子内容里面,这个可以考虑将非本站的链接转换为内链,这样就可以了。

是不是很简单呢,真心感谢discuz官方的升级,discuz X3.3及以前的老版本需要修改代码才能解决ssl证书加密访问,建议升级后配置。

该会员没有填写今日想说内容.
使用高级回帖 (可批量传图、插入视频等)

发表回复

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
站点服务大厅 官方群