前几天帮人实现discuz x2的子目录伪静态,以前没做过,就去查了下百度和discuz论坛,发现好多人都在找这样的伪静态方法,可是都没真正能解决的方法。
discuz x2现在用的人还是比较多的,我不知道有多少人用的是iis7的,用apache的就好办一些,因为.hacess是可以设置子目录的伪静态规则的,但是 在iis7下,webconfig究竟怎么放才能实现子目录伪静态没有试过,我百度的时候还有人说iis7是discuz x2的非主流环境。
下面我就说一下在iis7下如何实现discuz x2的子目录伪静态。
首先说明一下,在iis7下我们自己测试的时候之所以不能实现,大部分是因为我们把伪静态的文件放在子目录了,造成主目录的规则跟子目录相互冲突。
还有一些是在子目录消除了主目录的伪静态继承,但是依旧打不开。
我通过多次测试发现,iis7下的子目录伪静态,规则要放在主目录,而且规则的写法不能跟主目录的规则冲突。我这里就不说那么多理论了。直接发规则:
<?xml version=1.0 encoding=utf-8?>
<configuration>
<system.webserver>
<rewrite>
<rules>
<rule name=www 301redirect stopprocessing=true> // 301跳转规则
<match url=.* />
<conditions>
<add input={http_host} pattern=^domain.comg$ />
</conditions>
<action type=redirect url=http://www.domain.com/{r:0} redirecttype=permanent />
</rule>
<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=group_group>
<match url=^(.*)/group-([0-9]+)-([0-9]+).html?*(.*)$ />
<action type=rewrite url={r:1}/forum.php?mod=group&fid={r:2}&page={r:3}&{r:4} />
</rule>
<rule name=home_space>
<match url=^(.*)/space-(username|uid)-(.+).html?*(.*)$ />
<action type=rewrite url={r:1}/home.php?mod=space&{r:2}={r:3}&{r:4} />
</rule>
<rule name=home_blog>
<match url=^(.*)/blog-([0-9]+)-([0-9]+).html?*(.*)$ />
<action type=rewrite url={r:1}/home.php?mod=space&uid={r:2}&do=blog&id={r:3}&{r:4} />
</rule>
<rule name=forum_archiver>
<match url=^(.*)/(fid|tid)-([0-9]+).html?*(.*)$ />
<action type=rewrite url={r:1}/index.php?action={r:2}&value={r:3}&{r:4} />
</rule> //论坛规则结束
<rule name=wordpress patternsyntax=wildcard> // wp伪静态规则开始
<match url=* />
<conditions>
<add input={request_filename} matchtype=isfile negate=true />
<add input={request_filename} matchtype=isdirectory negate=true />
<add input={request_uri} pattern=^/bbs1 negate=true />
</conditions>
<action type=rewrite url=index.php />
</rule>
</rules>
</rewrite>
</system.webserver>
</configuration>
基本上这个规则的子目录已经确定是bbs了,实在不会的朋友直接抄袭吧。