Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

在IIS服务器中应用全局伪静态时,导致冲突的问题

[复制链接]
lidq.jingwu 发表于 2009-10-16 09:46:24 | 显示全部楼层 |阅读模式
在IIS服务器中即有SupeSite,又有Discuz!等多系统时,应用伪静态时,导致冲突的问题:
伪静态规则是有一定的加载顺序的,并且针对一定的规则在满足一定条件的情况下可以让它停止匹配后面的规则。
这里以 SupeSite与Discuz!为例:
在服务器中同时应用这两个系统的伪静态规则时,一定要将SupeSite的放在最前面,如下:
  1. #SupeSite
  2. RewriteRule ^/([0-9]+)$ /index\.php\?uid/$1 [L]
  3. RewriteRule ^/([0-9]+)/spacelist(.+)$ /index\.php\?uid/$1/action/spacelist/type$2 [L]
  4. RewriteRule ^/([0-9]+)/viewspace(.+)$ /index\.php\?uid/$1/action/viewspace/itemid$2 [L]
  5. RewriteRule ^/([0-9]+)/viewbbs(.+)$ /index\.php\?uid/$1/action/viewbbs/tid$2 [L]
  6. RewriteRule ^/([0-9]+)/(.*)$ /index\.php\?uid/$1/$2 [L]

  7. RewriteRule ^/action(.+)$ /index\.php\?action$1 [L]
  8. RewriteRule ^/category(.+)$ /index\.php\?action/category/catid$1 [L]
  9. RewriteRule ^/viewnews(.+)$ /index\.php\?action/viewnews/itemid$1 [L]
  10. RewriteRule ^/viewthread(.+)$ /index\.php\?action/viewthread/tid$1 [L]
  11. RewriteRule ^/mygroup(.+)$ /index\.php\?action/mygroup/gid$1 [L]
  12. #Discuz!
  13. RewriteRule ^(.*)/archiver/((fid|tid)-[0-9]+\.html)\?*(.*)$ $1/archiver/index\.php\?$2&$4
  14. RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html\?*(.*)$ $1/forumdisplay\.php\?fid=$2&page=$3&$4
  15. RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html\?*(.*)$ $1/viewthread\.php\?tid=$2&extra=page\%3D$4&page=$3&$4
  16. RewriteRule ^(.*)/space-(username|uid)-(.+)\.html\?*(.*)$ $1/space\.php\?$2=$3&$4
  17. RewriteRule ^(.*)/tag-(.+)\.html\?*(.*)$ $1/tag\.php\?name=$2&$3
复制代码
因为SupeSite规则后面都有 [L] ,此标志的作用是在匹配完此条规则,并且满足条件,就不再匹配后面的规则。
而 Discuz! 中并没有这样的限制符号,会造成伪静态规则的重叠混乱。

注意:如果服务器上还有其他的系统,请根据各自的规则调整,如果需要中断,请加上 [L] 符号。

如果用此种方法不能解决你的问题,请跟帖回复
水水奥 发表于 2009-10-27 16:06:36 | 显示全部楼层
请问楼主的代码SupeSite与Discuz!的各个版本通用吗?比如DZ 6.0 7.0或者SS的6.0 7.5
回复

使用道具 举报

shuishuiao 发表于 2009-10-27 17:56:03 | 显示全部楼层
请问楼主Apache Web Server(虚拟主机用户)的.htaccess 怎么写呀?也是一样吗?
我是ss在根目录,论坛在根目录下的forum文件里里头。需要同时开启ss和论坛的伪静态,规则要怎么写呀。谢谢楼主。
回复

使用道具 举报

 楼主| lidq.jingwu 发表于 2009-10-27 18:32:26 | 显示全部楼层
2# 水水奥


    discuz我不太清楚,ss是通用的。
回复

使用道具 举报

 楼主| lidq.jingwu 发表于 2009-10-27 18:33:56 | 显示全部楼层
3# shuishuiao


    看教程吧:
如何在Apache环境下配置Rewrite规则:http://faq.comsenz.com/viewnews-12
回复

使用道具 举报

wonjon 发表于 2009-10-28 19:22:59 | 显示全部楼层
楼主好人 啊
回复

使用道具 举报

游狼部落 发表于 2009-10-29 22:42:31 | 显示全部楼层
用了楼主的规则,静态的链接都可以打开,但会出现下面的问题:

1、论坛回复帖子以后不会自动跳转;

2、点击论坛所有地址格式为tid=**的帖子,都会跳转到论坛首页,而不是打开相应的帖子。

给楼主一个范例,希望能对解决问题有所帮助

http://www.u6b6.com/viewthread-53.html  这个是SS的一个论坛内容页面。打开是没问题的,但是你点击标题旁边的“转至论坛”,也就是这个地址

http://bbs.u6b6.com/viewthread.php?tid=53  打开以后却是论坛的首页,不是帖子页面。

我估计肯定是SS和DZ的伪静态规则有一条是冲突的

就是SS的这条RewriteRule ^/viewthread(.+)$ /index\.php\?action/viewthread/tid$1 [L]

和DZ的这条RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html\?*(.*)$ $1/viewthread\.php\?tid=$2&extra=page\%3D$4&page=$3&$4

楼主看看能不能帮忙解决?
回复

使用道具 举报

游狼部落 发表于 2009-10-30 10:02:51 | 显示全部楼层
同样的问题,我在落伍也找到了有人反映这个事情

http://www.im286.com/thread-3626781-1-1.html

这个是落伍的有人发帖反映这个事,他提出的方法我也试过,如果把规则换成他说的那条,根本就打不开了。
回复

使用道具 举报

 楼主| lidq.jingwu 发表于 2009-10-30 16:11:25 | 显示全部楼层
8# 游狼部落


    应用下面的规则试一下:
  1. #SupeSite
  2. RewriteRule ^/([0-9]+)$ /index\.php\?uid/$1 [L]
  3. RewriteRule ^/([0-9]+)/spacelist(.+)$ /index\.php\?uid/$1/action/spacelist/type$2 [L]
  4. RewriteRule ^/([0-9]+)/viewspace(.+)$ /index\.php\?uid/$1/action/viewspace/itemid$2 [L]
  5. RewriteRule ^/([0-9]+)/viewbbs(.+)$ /index\.php\?uid/$1/action/viewbbs/tid$2 [L]
  6. RewriteRule ^/([0-9]+)/(.*)$ /index\.php\?uid/$1/$2 [L]

  7. RewriteRule ^/action(.+)$ /index\.php\?action$1 [L]
  8. RewriteRule ^/category(.+)$ /index\.php\?action/category/catid$1 [L]
  9. RewriteRule ^/viewnews(.+)$ /index\.php\?action/viewnews/itemid$1 [L]
  10. RewriteRule ^/viewthread-([0-9]+)$ /index.php?action/viewthread/tid/$1 [L]
  11. RewriteRule ^/mygroup(.+)$ /index\.php\?action/mygroup/gid$1 [L]
  12. #Discuz!
  13. RewriteRule ^(.*)/archiver/((fid|tid)-[0-9]+\.html)\?*(.*)$ $1/archiver/index\.php\?$2&$4
  14. RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html\?*(.*)$ $1/forumdisplay\.php\?fid=$2&page=$3&$4
  15. RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html\?*(.*)$ $1/viewthread\.php\?tid=$2&extra=page\%3D$4&page=$3&$4
  16. RewriteRule ^(.*)/space-(username|uid)-(.+)\.html\?*(.*)$ $1/space\.php\?$2=$3&$4
  17. RewriteRule ^(.*)/tag-(.+)\.html\?*(.*)$ $1/tag\.php\?name=$2&$3
复制代码
回复

使用道具 举报

游狼部落 发表于 2009-10-30 16:59:19 | 显示全部楼层
报告楼上的,用了你新改的规则以后,论坛是正常了,但是SS调用论坛帖子内容页面打不开了
http://www.u6b6.com/viewthread-53.html这个是SS调用论坛帖子内容页面
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-24 04:18 , Processed in 0.040963 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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