Discuz! X2子目錄偽靜態(tài)的實現(xiàn)方法

字號:


    前幾天幫人實現(xiàn)Discuz X2的子目錄偽靜態(tài),以前沒做過,就去查了下百度和Discuz論壇,發(fā)現(xiàn)好多人都在找這樣的偽靜態(tài)方法,可是都沒真正能解決的方法。
    Discuz X2現(xiàn)在用的人還是比較多的,我不知道有多少人用的是IIS7的,用Apache的就好辦一些,因為.hacess是可以設(shè)置子目錄的偽靜態(tài)規(guī)則的,但是 在IIS7下,webconfig究竟怎么放才能實現(xiàn)子目錄偽靜態(tài)沒有試過,我百度的時候還有人說IIS7是Discuz X2的非主流環(huán)境。
    下面我就說一下在IIS7下如何實現(xiàn)Discuz X2的子目錄偽靜態(tài)。
    首先說明一下,在IIS7下我們自己測試的時候之所以不能實現(xiàn),大部分是因為我們把偽靜態(tài)的文件放在子目錄了,造成主目錄的規(guī)則跟子目錄相互沖突。
    還有一些是在子目錄消除了主目錄的偽靜態(tài)繼承,但是依舊打不開。
    我通過多次測試發(fā)現(xiàn),IIS7下的子目錄偽靜態(tài),規(guī)則要放在主目錄,而且規(guī)則的寫法不能跟主目錄的規(guī)則沖突。我這里就不說那么多理論了。直接發(fā)規(guī)則:
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <system.webServer>
    <rewrite>
    <rules>
    <rule name="WWW 301Redirect" stopProcessing="true"> // 301跳轉(zhuǎn)規(guī)則
    <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"> // 論壇規(guī)則開始
    <match url="^(.*)/topic-(.+).html?*(.*)$" />
    <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?*(.*)$" />
    <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?*(.*)$" />
    <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?*(.*)$" />
    <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?*(.*)$" />
    <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?*(.*)$" />
    <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?*(.*)$" />
    <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?*(.*)$" />
    <action type="Rewrite" url="{R:1}/index.php?action={R:2}&amp;value={R:3}&amp;{R:4}" />
    </rule> //論壇規(guī)則結(jié)束
    <rule name="wordpress" patternSyntax="Wildcard"> // WP偽靜態(tài)規(guī)則開始
    <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>
    基本上這個規(guī)則的子目錄已經(jīng)確定是bbs了,實在不會的朋友直接抄襲吧。