2013-04-25 73 views
2

我在本網站的幫助下構建了重寫規則。 但我仍然有一個小問題。IIS重寫規則 - 隱藏目錄(規則無法正常工作)

我的目標是從URL中刪除某個目錄。

例如:

www.mywebsite.com/uk/editions/ 

應重新寫入

www.mywebsite.com/editions/ 

(刪除目錄UK)

上述場景現在正在爲所有網址,除了一。

英國主頁位於這裏。 (index.html

www.mywebsite.com/uk/ 

而作爲

www.mywebsite.com 

,而不是它顯示了www根index.html而不是uk/index.html頁面正確的重新寫入規則應顯示的URL。

,但如果我在URL中指定索引頁,像這樣

www.mywebsite.com/uk/index.html 

它正確重寫URL到

www.mywebsite.com 

,並顯示英國索引頁,而不是WWW根索引頁。

我使用的規則如下:

<rule name="Hide UK Directory in URL" enabled="true" stopProcessing="true"> 
    <match url="^uk$|^uk/(.*)$" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{HTTP_HOST}" pattern="^www\.mywebsite\.com$" /> 
    </conditions> 
    <action type="Redirect" url="{R:1}" logRewrittenUrl="true" /> 
</rule> 

<rule name="Rewrite the URL after UK is hidden" enabled="true" stopProcessing="true"> 
    <match url="^(?!uk)(.*)" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{HTTP_HOST}" pattern="^www\.mywebsite\.com$" /> 
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
    </conditions> 
    <action type="Rewrite" url="uk/{R:1}" logRewrittenUrl="true" /> 
</rule> 

回答

0

這個問題來自於第二個規則的有(Rewrite the URL after UK is hidden)。

在你的條件,你必須:

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

那些2線的意思是,如果請求的URL物理路徑相匹配的文件或目錄,它不會執行重寫。

當您請求www.mywebsite.com時,它將物理路徑與目錄匹配,因此規則不會執行。

+0

非常感謝你,我會修改我的規則,並讓你知道我如何得到。 – user1611258 2013-05-01 08:18:20