大家都知道,在PW转换到DZ后,帖子等链接会发生变化,这就导致了百度以前收录的页面用户访问会打不开的情况,如果一个收录几十万页面的论坛遇到这个情况是很尴尬的,而且等百度重新收录新地址估计需要挺长的一段时间,所以,如何从老地址跳转到相应的新地址就很重要了,因为偶是小菜,昨天我找了一天都没解决,今天中午终于把它弄好了,下面分享一下。
有几个相关的帖子大家可以参考下:
【phpwind=>Discuz!X 部分 rewrite 规则】
由于我论坛的环境和以上两个不同,所以一直没成功。。。
以下是我在IIS7环境下成功的:
[cce_xml]
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<compilation debug="true" />
<customErrors mode="Off" />
</system.web>
<system.webServer>
<defaultDocument>
<files>
<add value="forum.php" />
</files>
</defaultDocument>
<rewrite>
<rules>
<clear />
<rule name="已导入的规则 1">
<match url="^thread-htm-fid-([0-9]+)\.html$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="forum.php?mod=forumdisplay&fid={R:1}" appendQueryString="false" />
</rule>
<rule name="已导入的规则 2">
<match url="^read-htm-tid-([0-9]+)\.html$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="forum.php?mod=viewthread&tid={R:1}" appendQueryString="false" />
</rule>
<rule name="已导入的规则 3">
<match url="^(.*)-htm-(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="{R:1}.php?{R:2}" appendQueryString="false" />
</rule>
<rule name="portal_topic">
<match url="^(.*/)*topic-(.+).html\?*(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<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\?*(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<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\?*(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<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\?*(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<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\?*(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<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\?*(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<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\?*(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<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\?*(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="{R:1}/index.php\?action={R:2}&value={R:3}&{R:4}" />
</rule>
<rule name="plugin">
<match url="^(.*/)*([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+).html\?*(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="{R:1}/plugin.php\?id={R:2}:{R:3}&{R:4}" />
</rule>
</rules>
<rewriteMaps>
<rewriteMap name="^(.*/)*read-htm-tid-([0-9]+).html$" />
</rewriteMaps>
</rewrite>
</system.webServer>
</configuration>
[/cce_xml]
其中【已导入的规则】那三条就是针对于PW的帖子和版块链接转到DZ帖子和版块链接用的,其他的规则就是官方默认的,IIS7下的伪静态是修改web.config文件的,最后尤其重要的一点,貌似规则有优先顺序的?导入的那三条最好放在最上面!!否则有可能不起作用。
论坛最重要的链接应该就是帖子和版块了吧,其他模块的链接转换我还没捣鼓,因为链接也不多,希望已经捣鼓出来的同学回帖提示我一下,共享一下撒~注意哦,我希望是在IIS7环境下的~