这几天在完善IDCTalk论坛的设置,设置完应用的域名之后发现通过各个应用的域名都可以访问到相同的内容,同一个内容有多个入口,因此存在URL规范化问题。搜索了官方论坛,看到不少人存在这个问题,但是官方并没有给出很好的解决方法,说明这个是程序的Bug,无法通过程序的设置来解决,只能想其他办法。
由于Discuz各应用的URL很有规律,所以想到可以用Rewrite来解决多入口问题,下面以论坛为例来说明,门户和群组类似。
论坛的主要页面的URI都是以 /forum 及/thread 开始的,因此可以加一个Rewrite规则,判断如果请求的URI是以/forum 或/thread 开头,那么就应该是论坛的内容,如果域名却不是bbs.moke8.com ,那么就执行301转向到这个域名上。
规则如下:
RewriteCond %{HTTP_HOST} !(^bbs\.aizhanku\.com$) [NC]
RewriteCond %{REQUEST_URI} (^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$)|(^/forum-(\w+)-([0-9]+)\.html$)
RewriteRule ^(.*)$ http://bbs.aizhanku.com/$1 [L,R=301]
使用的时候要把域名换成你的网站对应的域名{:soso_e113:}