昨天晚上一个客户的门户频道一直无法使用,经过最后排除发展是伪静态的问题导致的。之前也写过Discuz论坛在虚拟主机环境下如何开启伪静态的方法http://www.h517.com/832.html

门户伪静态官方m.king发现在apache 伪静态规则 漏了一条

1
2
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^article-(.+)\.html$ portal.php?mod=view&aid=$1&%1

导致很多用户的门户文章伪静态后出错,找不到页面。

经测试发现是少了一条门户文章的规则。

在apache下的规则为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Rewrite 系统规则请勿修改 漏掉的文章链接:portal.php?mod=view&aid=num

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^article-(.+)\.html$ portal.php?mod=view&aid=$1&%1

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2&%1

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2&%1

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^archiver/(fid|tid)-([0-9]+)\.html$ archiver/index.php?action=$1&value=$2&%1

如果不清楚如何使用可以看Discuz伪静态教程,结合IIS服务器伪静态的配置,应该可以解决掉大家门户伪静态失败的问题。

IIS服务器下伪静态组件的安装方法:http://www.h517.com/1116.html

Apache服务器下伪静态设置方法:http://www.h517.com/1687.html

开启伪静态后欢迎新会员中文问题的解决方法:http://www.h517.com/1689.html