天天看點

IIS7.5使用web.config設定僞靜态的二種方法(轉)

近幾天公司裡開發的項目有幾個運作在IIS7.5上,由于全站采用的是僞靜态,是以從網上找到兩兩種方法來實作。這兩種方法各有優勢:第一種比較靈活,隻要把檔案拷到根目錄下,即可直接顯示所有僞靜态頁面(适用于此僞靜态規則的所有項目,如ThinkPHP),無需更改代碼;第二種适合有子目錄時的僞靜态,比如一個網站下有多個子網站且都要使用僞靜态,那麼就考慮使用第二種方法了,第一種會報錯誤。兩種方法,自己根據情況使用吧(當然,并不是适用所有項目,可以根據項目的僞靜态規則自行調整)。以下是代碼:

第一種方法:web.config

< ?xml version="1.0" encoding="UTF-8"?>

< configuration>

    <system.webServer>

 <rewrite>

  <rules>

  <rule name="OrgPage" stopProcessing="true">

  <match url="^(.*)$" />

  <conditions logicalGrouping="MatchAll">

  <add input="{HTTP_HOST}" pattern="^(.*)$" />

  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />

  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />

  </conditions>

  <action type="Rewrite" url="index.php/{R:1}" />

  </rule>

  </rules>

 </rewrite>

    </system.webServer>

< /configuration>

第二種方法:web.config

        <rewrite>

            <rules>

                <rule name="規則 1" stopProcessing="true">

                    <match url="^includes/(.*)" />

                    <action type="Rewrite" url="includes\/{R:1}" />

                </rule>

    <rule name="規則 2" stopProcessing="true">

                    <match url="^(blog)/includes/(.*)" />

                    <action type="Rewrite" url="{R:1}/includes\/{R:2}" />

                <rule name="規則 3" stopProcessing="true">

                    <match url="^(blog)/(.*).html(.*)" />

                    <action type="Rewrite" url="{R:1}/index.php\/{R:2}.html{R:3}" />

                <rule name="規則 4" stopProcessing="true">

                    <match url="^(.*).html(.*)" />

                    <action type="Rewrite" url="index.php\/{R:1}.html{R:2}" />

            </rules>

        </rewrite>

下面是補充:

IIS 7和IIS 7.5及以後的版本估計都會使用web.config來實作僞靜态規則,于是我們以前的僞靜态檔案必須更改。網上找了一圈,還沒有發現比較全面的web.config僞靜态規則,于是我們這裡整理一份,供初次使用的朋友參考。

實作普通頁面、帶一個數字參數頁面和帶兩個參數頁面的僞靜态!

<a href="http://www.jb51.net/article/42901.htm#">?</a>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<code>&lt;?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"UTF-8"</code><code>?&gt;</code>

<code>&lt;</code><code>configuration</code><code>&gt;</code>

<code>&lt;</code><code>system.webServer</code><code>&gt;</code>

<code>&lt;</code><code>rewrite</code><code>&gt;</code>

<code>&lt;</code><code>rules</code><code>&gt;</code>

<code>&lt;</code><code>rule</code> <code>name</code><code>=</code><code>"Index"</code> <code>stopProcessing</code><code>=</code><code>"true"</code><code>&gt;</code>

<code>&lt;</code><code>match</code> <code>url</code><code>=</code><code>"^index.html"</code> <code>/&gt;</code>

<code>&lt;</code><code>action</code> <code>type</code><code>=</code><code>"Rewrite"</code> <code>url</code><code>=</code><code>"index.php"</code> <code>/&gt;</code>

<code>&lt;/</code><code>rule</code><code>&gt;</code>

<code>&lt;</code><code>rule</code> <code>name</code><code>=</code><code>"Rule1"</code> <code>stopProcessing</code><code>=</code><code>"true"</code><code>&gt;</code>

<code>&lt;</code><code>match</code> <code>url</code><code>=</code><code>"^news_([0-9]+).html"</code> <code>/&gt;</code>

<code>&lt;</code><code>action</code> <code>type</code><code>=</code><code>"Rewrite"</code> <code>url</code><code>=</code><code>"news.php?nid={R:1}"</code> <code>/&gt;</code>

<code>  </code> 

<code>&lt;</code><code>rule</code> <code>name</code><code>=</code><code>"Rule2"</code> <code>stopProcessing</code><code>=</code><code>"true"</code><code>&gt;</code>

<code>&lt;</code><code>match</code> <code>url</code><code>=</code><code>"news_list_([0-9]+)_([0-9]+).html"</code> <code>/&gt;</code>

<code>&lt;</code><code>action</code> <code>type</code><code>=</code><code>"Rewrite"</code> <code>url</code><code>=</code><code>"news_list.php?nid={R:1}&amp;page={R:2}"</code> <code>/&gt;</code>

<code>&lt;/</code><code>rules</code><code>&gt;</code>

<code>&lt;/</code><code>rewrite</code><code>&gt;</code>

<code>&lt;/</code><code>system.webServer</code><code>&gt;</code>

<code>&lt;/</code><code>configuration</code><code>&gt;</code>

IIS 7.5通過web.config實作301重定向的方法,将不帶www的域名轉向到帶www的域名上!

<code>&lt;</code><code>rule</code> <code>name</code><code>=</code><code>"Redirect"</code> <code>stopProcessing</code><code>=</code><code>"true"</code><code>&gt;</code>

<code>&lt;</code><code>match</code> <code>url</code><code>=</code><code>".*"</code> <code>/&gt;</code>

<code>&lt;</code><code>conditions</code><code>&gt;</code>

<code>&lt;</code><code>add</code> <code>input</code><code>=</code><code>"{HTTP_HOST}"</code> <code>pattern</code><code>=</code><code>"^chuangluo.com$"</code> <code>/&gt;</code>

<code>&lt;/</code><code>conditions</code><code>&gt;</code>

由于我們的網站使用了轉義字元,是以在實際使用的時候,大家不可以直接複制以上代碼。請複制粘貼到Dreamweaver等編輯器後,使用替換功能把雙引号全部替換為英文狀态下的雙引号,然後再修改rule标簽内的内容就可以了,跳轉的地方請更改為自己的網址即可。

需要注意的地方是以前httpd.ini和.htaccess支援網址中兩個參數用&amp;符号連結,在web.config中是不支援的,需要将這個符号更改為&amp;才能正常使用。由于我們目前隻有一台這種類型的伺服器使用經驗,有可能存在不足,如有更多更全面的資料,歡迎交流學習!