代码疯子 - IT技术交流论坛-无限Perfect,追求梦想

 找回密码
 立即注册

用百度帐号登录

只需两步,快速登录

QQ登录

只需一步,快速开始

搜索
热搜: 教程 软件 源码
查看: 94|回复: 19

[Discuz教程] Discuz伪静态失效解决方法(最有效排错方案)

[复制链接]

1

主题

4

帖子

1

积分

菜鸡代码

Rank: 1

积分
1
发表于 2020-7-9 23:00:13 | 显示全部楼层 |阅读模式

                               
登录/注册后可看大图

Discuz!经常会遇到伪静态配置不生效,更换模板之后失效等问题,下面给出终极有效解决discuz伪静态失效的排查方案。


一、确认后台已开启URL静态化


在后台——全局——SEO设置——URL静态化中开启对应页面的静态化,注意:如果开启[仅对游客有效],那么登录的用户,是无法看到URL伪静态的,可以在浏览器的隐身窗口测试效果。


二、确认web服务器已配置伪静态规则


伪静态规则可以通过【查看当前的 Rewrite 规则URL 静态化】按钮查看,不同的web服务器的伪静态规则完全不同。如果没有更改为URL格式,默认的伪静态规则如下:

  1. Apache Web Server(独立主机用户)

  2. <IfModule mod_rewrite.c>
  3.     RewriteEngine On
  4.     RewriteCond %{QUERY_STRING} ^(.*)$
  5.     RewriteRule ^(.*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2&%1
  6.     RewriteCond %{QUERY_STRING} ^(.*)$
  7.     RewriteRule ^(.*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3&%1
  8.     RewriteCond %{QUERY_STRING} ^(.*)$
  9.     RewriteRule ^(.*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3&%1
  10.     RewriteCond %{QUERY_STRING} ^(.*)$
  11.     RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page\%3D$4&page=$3&%1
  12.     RewriteCond %{QUERY_STRING} ^(.*)$
  13.     RewriteRule ^(.*)/(fid|tid)-([0-9]+)\.html$ $1/archiver/index.php?action=$2&value=$3&%1
  14. </IfModule>


  15. Apache Web Server(虚拟主机用户)

  16. # 将 RewriteEngine 模式打开
  17. RewriteEngine On

  18. # 修改以下语句中的 /discuz 为您的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
  19. RewriteBase /discuz

  20. # Rewrite 系统规则请勿修改
  21. RewriteCond %{QUERY_STRING} ^(.*)$
  22. RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1
  23. RewriteCond %{QUERY_STRING} ^(.*)$
  24. RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ portal.php?mod=view&aid=$1&page=$2&%1
  25. RewriteCond %{QUERY_STRING} ^(.*)$
  26. RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1
  27. RewriteCond %{QUERY_STRING} ^(.*)$
  28. RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1
  29. RewriteCond %{QUERY_STRING} ^(.*)$
  30. RewriteRule ^(fid|tid)-([0-9]+)\.html$ archiver/index.php?action=$1&value=$2&%1



  31. IIS Web Server(独立主机用户)
  32. [ISAPI_Rewrite]

  33. # 3600 = 1 hour
  34. CacheClockRate 3600

  35. RepeatLimit 32

  36. # Protect httpd.ini and httpd.parse.errors files
  37. # from accessing through HTTP
  38. RewriteRule ^(.*)/topic-(.+)\.html(\?(.*))*$ $1/portal\.php\?mod=topic&topic=$2&$4
  39. RewriteRule ^(.*)/article-([0-9]+)-([0-9]+)\.html(\?(.*))*$ $1/portal\.php\?mod=view&aid=$2&page=$3&$5
  40. RewriteRule ^(.*)/forum-(\w+)-([0-9]+)\.html(\?(.*))*$ $1/forum\.php\?mod=forumdisplay&fid=$2&page=$3&$5
  41. RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html(\?(.*))*$ $1/forum\.php\?mod=viewthread&tid=$2&extra=page\%3D$4&page=$3&$6
  42. RewriteRule ^(.*)/(fid|tid)-([0-9]+)\.html(\?(.*))*$ $1/archiver/index\.php\?action=$2&value=$3&$5


  43. IIS7 Web Server(独立主机用户)
  44. <rewrite>
  45.     <rules>
  46.         <rule name="portal_topic">
  47.             <match url="^(.*/)*topic-(.+).html\?*(.*)$" />
  48.             <action type="Rewrite" url="{R:1}/portal.php\?mod=topic&topic={R:2}&{R:3}" />
  49.         </rule>
  50.         <rule name="portal_article">
  51.             <match url="^(.*/)*article-([0-9]+)-([0-9]+).html\?*(.*)$" />
  52.             <action type="Rewrite" url="{R:1}/portal.php\?mod=view&aid={R:2}&page={R:3}&{R:4}" />
  53.         </rule>
  54.         <rule name="forum_forumdisplay">
  55.             <match url="^(.*/)*forum-(\w+)-([0-9]+).html\?*(.*)$" />
  56.             <action type="Rewrite" url="{R:1}/forum.php\?mod=forumdisplay&fid={R:2}&page={R:3}&{R:4}" />
  57.         </rule>
  58.         <rule name="forum_viewthread">
  59.             <match url="^(.*/)*thread-([0-9]+)-([0-9]+)-([0-9]+).html\?*(.*)$" />
  60.             <action type="Rewrite" url="{R:1}/forum.php\?mod=viewthread&tid={R:2}&extra=page%3D{R:4}&page={R:3}&{R:5}" />
  61.         </rule>
  62.         <rule name="forum_archiver">
  63.             <match url="^(.*/)*(fid|tid)-([0-9]+).html\?*(.*)$" />
  64.             <action type="Rewrite" url="{R:1}/archiver/index.php\?action={R:2}&value={R:3}&{R:4}" />
  65.         </rule>
  66.     </rules>
  67. </rewrite>


  68. Zeus Web Server
  69. match URL into $ with ^(.*)/topic-(.+)\.html\?*(.*)$
  70. if matched then
  71.     set URL = $1/portal.php?mod=topic&topic=$2&$3
  72. endif
  73. match URL into $ with ^(.*)/article-([0-9]+)-([0-9]+)\.html\?*(.*)$
  74. if matched then
  75.     set URL = $1/portal.php?mod=view&aid=$2&page=$3&$4
  76. endif
  77. match URL into $ with ^(.*)/forum-(\w+)-([0-9]+)\.html\?*(.*)$
  78. if matched then
  79.     set URL = $1/forum.php?mod=forumdisplay&fid=$2&page=$3&$4
  80. endif
  81. match URL into $ with ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html\?*(.*)$
  82. if matched then
  83.     set URL = $1/forum.php?mod=viewthread&tid=$2&extra=page\%3D$4&page=$3&$5
  84. endif
  85. match URL into $ with ^(.*)/(fid|tid)-([0-9]+)\.html\?*(.*)$
  86. if matched then
  87.     set URL = $1/archiver/index.php?action=$2&value=$3&$4
  88. endif


  89. Nginx Web Server
  90. rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
  91. rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
  92. rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
  93. rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
  94. rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/archiver/index.php?action=$2&value=$3 last;
  95. if (!-e $request_filename) {
  96.     return 404;
  97. }
复制代码
三、错误排查


如果确认上面两点操作无误,但还是不行。首先使用伪静态后的URL访问一下,如果可以访问,那说明系统配置没问题,只是模板不支持。不支持伪静态的模板,通常是common/footer.htm中缺少下面代码:

  1. <!--{eval output();}-->
复制代码
将代码复制到footer.htm中,</body>上面一行即可。
欢迎光临IT技术交流论坛:https://www.daimafengzi.com
省钱君,您的省钱专家:https://www.sqjun.com

0

主题

2

帖子

1

积分

菜鸡代码

Rank: 1

积分
1
发表于 2020-7-9 23:00:22 | 显示全部楼层
看到这帖子真是高兴!
欢迎光临IT技术交流论坛:https://www.daimafengzi.com
省钱君,您的省钱专家:https://www.sqjun.com
回复

使用道具 举报

1

主题

9

帖子

3

积分

菜鸡代码

Rank: 1

积分
3
发表于 2020-7-9 23:00:30 | 显示全部楼层
楼主加油,我们都看好你哦。
欢迎光临IT技术交流论坛:https://www.daimafengzi.com
省钱君,您的省钱专家:https://www.sqjun.com
回复

使用道具 举报

0

主题

5

帖子

2

积分

菜鸡代码

Rank: 1

积分
2
发表于 2020-7-9 23:00:30 | 显示全部楼层
感谢您的宝贵建议,我们会努力争取做得更好!
欢迎光临IT技术交流论坛:https://www.daimafengzi.com
省钱君,您的省钱专家:https://www.sqjun.com
回复

使用道具 举报

0

主题

6

帖子

2

积分

菜鸡代码

Rank: 1

积分
2
发表于 2020-7-9 23:00:51 | 显示全部楼层
终于解决了。心里好受多了!
欢迎光临IT技术交流论坛:https://www.daimafengzi.com
省钱君,您的省钱专家:https://www.sqjun.com
回复

使用道具 举报

0

主题

4

帖子

1

积分

菜鸡代码

Rank: 1

积分
1
发表于 2020-7-9 23:00:51 | 显示全部楼层
支持一下,下面的保持队形!
欢迎光临IT技术交流论坛:https://www.daimafengzi.com
省钱君,您的省钱专家:https://www.sqjun.com
回复

使用道具 举报

0

主题

8

帖子

2

积分

菜鸡代码

Rank: 1

积分
2
发表于 2020-7-10 07:32:09 | 显示全部楼层
楼主说的我也略懂!
欢迎光临IT技术交流论坛:https://www.daimafengzi.com
省钱君,您的省钱专家:https://www.sqjun.com
回复

使用道具 举报

0

主题

11

帖子

3

积分

菜鸡代码

Rank: 1

积分
3
发表于 2020-7-16 05:19:05 | 显示全部楼层
感觉不错!
欢迎光临IT技术交流论坛:https://www.daimafengzi.com
省钱君,您的省钱专家:https://www.sqjun.com
回复

使用道具 举报

0

主题

8

帖子

2

积分

菜鸡代码

Rank: 1

积分
2
发表于 2020-7-18 01:04:52 | 显示全部楼层
楼主很有艺术范!
欢迎光临IT技术交流论坛:https://www.daimafengzi.com
省钱君,您的省钱专家:https://www.sqjun.com
回复

使用道具 举报

0

主题

6

帖子

2

积分

菜鸡代码

Rank: 1

积分
2
发表于 2020-8-2 06:28:04 | 显示全部楼层
楼主的文笔不错!
欢迎光临IT技术交流论坛:https://www.daimafengzi.com
省钱君,您的省钱专家:https://www.sqjun.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 用百度帐号登录

本版积分规则

QQ|Archiver|手机版|小黑屋|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2020-9-26 21:54 , Processed in 0.167098 second(s), 28 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表