标签: phpwind

  • IIS7下phpwind8.7转换X2.5后使百度收录的老链接仍有效的方法

    大家都知道,在PW转换到DZ后,帖子等链接会发生变化,这就导致了百度以前收录的页面用户访问会打不开的情况,如果一个收录几十万页面的论坛遇到这个情况是很尴尬的,而且等百度重新收录新地址估计需要挺长的一段时间,所以,如何从老地址跳转到相应的新地址就很重要了,因为偶是小菜,昨天我找了一天都没解决,今天中午终于把它弄好了,下面分享一下。

    有几个相关的帖子大家可以参考下:

    【phpwind=>Discuz!X 部分 rewrite 规则】

    【phpwind8.7转换成功X2.5 保持原伪静态链接】

    由于我论坛的环境和以上两个不同,所以一直没成功。。。

    以下是我在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&amp;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&amp;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&amp;topic={R:2}&amp;{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&amp;aid={R:2}&amp;page={R:3}&amp;{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&amp;fid={R:2}&amp;page={R:3}&amp;{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&amp;tid={R:2}&amp;extra=page%3D{R:4}&amp;page={R:3}&amp;{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&amp;fid={R:2}&amp;page={R:3}&amp;{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&amp;{R:2}={R:3}&amp;{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&amp;uid={R:2}&amp;do=blog&amp;id={R:3}&amp;{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}&amp;value={R:3}&amp;{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}&amp;{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环境下的~