400-685-0732

WJMonitor舆情之声

企业大数据智能舆情监测管理解决方案

全网监测海量数据按需发布监测预警

实时把握舆情动态精准追溯信息源头

获取验证码
企业采购 个人使用
当前位置: 首页 > SEO博客 > Discuz! X2在linux系统下伪静态需要注意的地方

Discuz! X2在linux系统下伪静态需要注意的地方

时间:2012-04-19 19:06:20
前几天我们的SEOTcs系统上线了Discuz!论坛,由于默认的url地址过长并且带的参数过多,导致论坛文章基本不收录,于是要求将论坛作一下伪静态,但是之前apache的rewrite模块由于某种原因没配置好,没办法,只能去分析问题并去解决了。

经过一段时间的折腾和探索,问题找到了,解决问题后的心情还是挺愉快的,开心之余,还是给大家分享一下问题解决的几个关键点吧。

对于Discuz! X2论坛的url地址伪静态,主要注意以下三点,做好下面这些,你就会顺利解决这个问题。

1,开启apache服务器的rewrite模块。这个一般都没什么问题,这个就是需要确保apache中的rewrite模块是开启的,有时候默认它是不开启的,所以你需要到apache的安装目录,修改一下配置文件apache2.conf,添加rewrite的加载模块:

Include mods-available/rewrite.load

当然,我这里是在ubuntu下的操作,不同的linux系统加载的模块命令有所区别,有些也可能是:

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

意思你知道的,在将apache重启后,rewrite模块就算是开启了。

2,在VirtualHost中设置好Directory下的AllowOverride参数。在linux系统下,如果是多网站并存的情况下,还需要配置好VirtualHost的一些参数,确保文件.htaccess文件能够生效。一般利用Apache的rewrite模块对 URL 进行重写时, rewrite规则写在 .htaccess 文件里会比较方便。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。

从安全性考虑,根目录的AllowOverride属性一般都配置成不允许任何Override ,即AllowOverride None。在 AllowOverride 设置为 None 时,.htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 ".htaccess" 作用域的指令都允许出现在 .htaccess 文件中。而对于 URL rewrite 来说,至少需要把目录设置为AllowOverride FileInfo。所以你必须不能将AllowOverride设置为None,这就是我原来为什么.htaccess文件为什么一直不生效的原因。

3,将Discuz! X2论坛的.htaccess文件放到所在目录。根据官方文档提供的.htaccess文件:

RewriteEngine On
RewriteBase /bbs
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 ^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 ^blog-([0-9]+)-([0-9]+)\.html$ home.php?mod=space&uid=$1&do=blog&id=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^archiver/(fid|tid)-([0-9]+)\.html$ archiver/index.php?action=$1&value=$2&%1

放到网站所在bbs的目录下,这里重点说明一下,这个.htaccess文件一定不能放在网站根目录,一定要放在论坛所在目录,并根据你所放置的目录适当修改RewriteBase的路径。

好了,做到了以上三点,你的Discuz! X2论坛系统url地址重写的功能就可以实现了,登录到后台管理中心的:

discuz的url伪静态

进行设置后,你就大功告成了,看完是不是觉得也不是很难呢,关键是碰到困难一定要找到真正的原因,然后去找对策解决!
分享按钮