discuz
为给大家提供发布问题、解决问题、分享经验的平台,本站现已开启经验交流区(基于discuz论坛程序)。
刚使用discuz程序搭建交流区的时候碰到了几个问题,不过通过百度一下均都得以解决。特开启discuz栏目为dz建站者们分享discuz常见问题及解决方案,希望经验分享为你所用!
discuz论坛程序如何开启url静态化?
登录discuz后台,rewrite设置方法:全局——>seo设置——>url 静态化
discuz论坛url静态化
如上图,勾选需要url静态化的页面,然后点击右上角的“查看当前的 rewrite 规则url 静态化”链接。可以看到discuz已经为我们生成了rewrite规则,如下所示:
apache web server(独立主机用户)
<ifmodule mod_rewrite.c> rewriteengine on rewritecond %{query_string} ^(.*)$ rewriterule ^(.*)/topic-(.+).html$ $1/portal.php?mod=topic&topic=$2&%1 rewritecond %{query_string} ^(.*)$ rewriterule ^(.*)/article-([0-9]+)-([0-9]+).html$ $1/portal.php?mod=view&aid=$2&page=$3&%1 rewritecond %{query_string} ^(.*)$ rewriterule ^(.*)/forum-(w+)-([0-9]+).html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3&%1 rewritecond %{query_string} ^(.*)$ rewriterule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3d$4&page=$3&%1 rewritecond %{query_string} ^(.*)$ rewriterule ^(.*)/(fid|tid)-([0-9]+).html$ $1/archiver/index.php?action=$2&value=$3&%1 </ifmodule>
apache web server(虚拟主机用户)
# 将 rewriteengine 模式打开 rewriteengine on # 修改以下语句中的 /discuz 为您的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 / rewritebase /discuz # rewrite 系统规则请勿修改 rewritecond %{query_string} ^(.*)$ rewriterule ^topic-(.+).html$ portal.php?mod=topic&topic=$1&%1 rewritecond %{query_string} ^(.*)$ rewriterule ^article-([0-9]+)-([0-9]+).html$ portal.php?mod=view&aid=$1&page=$2&%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 ^(fid|tid)-([0-9]+).html$ archiver/index.php?action=$1&value=$2&%1
iis web server(独立主机用户)
[isapi_rewrite] # 3600 = 1 hour cacheclockrate 3600 repeatlimit 32 # protect httpd.ini and httpd.parse.errors files # from accessing through http rewriterule ^(.*)/topic-(.+).html(?(.*))*$ $1/portal.php?mod=topic&topic=$2&$4 rewriterule ^(.*)/article-([0-9]+)-([0-9]+).html(?(.*))*$ $1/portal.php?mod=view&aid=$2&page=$3&$5 rewriterule ^(.*)/forum-(w+)-([0-9]+).html(?(.*))*$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3&$5 rewriterule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+).html(?(.*))*$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3d$4&page=$3&$6 rewriterule ^(.*)/(fid|tid)-([0-9]+).html(?(.*))*$ $1/archiver/index.php?action=$2&value=$3&$5
iis7 web server(独立主机用户)
<rewrite> <rules> <rule name="portal_topic"> <match url="^(.*/)*topic-(.+).html?*(.*)$" /> <action type="rewrite" url="{r:1}/portal.php?mod=topic&topic={r:2}&{r:3}" /> </rule> <rule name="portal_article"> <match url="^(.*/)*article-([0-9]+)-([0-9]+).html?*(.*)$" /> <action type="rewrite" url="{r:1}/portal.php?mod=view&aid={r:2}&page={r:3}&{r:4}" /> </rule> <rule name="forum_forumdisplay"> <match url="^(.*/)*forum-(w+)-([0-9]+).html?*(.*)$" /> <action type="rewrite" url="{r:1}/forum.php?mod=forumdisplay&fid={r:2}&page={r:3}&{r:4}" /> </rule> <rule name="forum_viewthread"> <match url="^(.*/)*thread-([0-9]+)-([0-9]+)-([0-9]+).html?*(.*)$" /> <action type="rewrite" url="{r:1}/forum.php?mod=viewthread&tid={r:2}&extra=page%3d{r:4}&page={r:3}&{r:5}" /> </rule> <rule name="forum_archiver"> <match url="^(.*/)*(fid|tid)-([0-9]+).html?*(.*)$" /> <action type="rewrite" url="{r:1}/archiver/index.php?action={r:2}&value={r:3}&{r:4}" /> </rule> </rules> </rewrite>
zeus web server
match url into $ with ^(.*)/topic-(.+).html?*(.*)$ if matched then set url = $1/portal.php?mod=topic&topic=$2&$3 endif match url into $ with ^(.*)/article-([0-9]+)-([0-9]+).html?*(.*)$ if matched then set url = $1/portal.php?mod=view&aid=$2&page=$3&$4 endif match url into $ with ^(.*)/forum-(w+)-([0-9]+).html?*(.*)$ if matched then set url = $1/forum.php?mod=forumdisplay&fid=$2&page=$3&$4 endif match url into $ with ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+).html?*(.*)$ if matched then set url = $1/forum.php?mod=viewthread&tid=$2&extra=page%3d$4&page=$3&$5 endif match url into $ with ^(.*)/(fid|tid)-([0-9]+).html?*(.*)$ if matched then set url = $1/archiver/index.php?action=$2&value=$3&$4 endif
nginx web server
rewrite ^([^.]*)/topic-(.+).html$ $1/portal.php?mod=topic&topic=$2 last; rewrite ^([^.]*)/article-([0-9]+)-([0-9]+).html$ $1/portal.php?mod=view&aid=$2&page=$3 last; rewrite ^([^.]*)/forum-(w+)-([0-9]+).html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last; rewrite ^([^.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3d$4&page=$3 last; rewrite ^([^.]*)/(fid|tid)-([0-9]+).html$ $1/archiver/index.php?action=$2&value=$3 last; if (!-e $request_filename) { return 404; }
重要说明:
以上规则是根据上图中勾选的页面后自动生成的。根据自己的服务器类型选择对应的规则,比如 久久经验网 的服务器是apache,那就不能选iis web server。 如果discuz论坛程序是建立在根目录,就将对应的rewrite规则粘贴到.htaccess文件里通过ftp上传到根目录;如果discuz论坛程序是在网站里扩展出来的,比如:根目录/bbs,则将此.htaccess文件存放在bbs目录下。久久经验网的经验交流区采取的就是这种方式。 以上规则都设置好后重新更新缓存,刷新前台界面discuz论坛的板块链接就变成静态的了。