2010-01-08 51 views
0

我有這樣的ISAPI_Rewrite規則:幫助在從遷移到的ISAPI_Rewrite IIS7 URL重寫

RewriteRule /([^/.?]+) /sc.asp?p=$1 [I,L] 

這個規則應該重寫像URL:

/一些-文章

/第二條

and should not re寫像URL:

/home.asp

/管理(因爲有一個目錄名爲admin)

/管理/

/網站/格特曼

它在ISAPI_Rewrite中很好用 昨天,我購買了Windows 2008 R2 VPS,並開始將我的ASP經典網絡應用程序轉移到ne w服務器。現在,除了URL重寫之外,一切都很好。我google-ed了一點,發現IIS7 URL重寫模塊是完全不同於ISAPI_Rewrite。我創建了空白規則。在模式中我設置了/([^/.?]+),在Action - > Action Type I中設置了Rewrite,並在Action - > Action properties - > Rewrite Url我設置了sc.asp?p={R:0}。它沒有工作。

一些谷歌搜索後,我發現我必須在我的模式開始時遠程/字符(所以我的模式現在是([^/.?]+))。所以我做了它,現在,它只是重寫任何網址,它應該只重寫不是目錄或文件的網址。

任何想法?

謝謝。

回答

1

最簡單的方法,以避免重複實際上指向現有文件中添加這些情況網址:

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

而且,你的對手圖案顯示常見的誤解。查詢字符串不會傳遞到匹配URL模式,因此您無需查找?