2011-11-26 37 views
2

我已經建立了一個簡單的規則重寫我的站點的所有請求:URL重寫造成404

<rule name="Rewrite Test" enabled="true" patternSyntax="Wildcard" stopProcessing="true"> 
    <match url="*" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{HTTP_HOST}" pattern="mydomain.com" /> 
    </conditions> 
    <action type="Rewrite" url="http://mydomain.com/TestImage.jpg" appendQueryString="false" /> 
</rule> 

啓用此功能後,我收到一個404錯誤我每次訪問我的域名的時間。但是,如果我將此更改爲重定向規則,則一切正常。有什麼我在這裏失蹤?

在此先感謝。

+0

你不能重寫到谷歌。 –

+0

@ DanielA.White感謝您的信息。我更新了我的示例,因爲在重寫到我擁有的其他域時問題仍然存在。我可以問爲什麼我不能重寫到Google? – Jonathan

+0

您無法重寫到其他網站。 –

回答

5

正如丹尼爾解釋,你不能重寫到一個域(除非你設置IIS作爲ARR的反向代理)。您只能重寫到同一站點上的另一個URL,因此它將隱式重寫爲與原始請求相同的域。

你重寫規則應該是:

<rule name="Rewrite Test" enabled="true" patternSyntax="Wildcard" stopProcessing="true"> 
    <match url="*" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{HTTP_HOST}" pattern="mydomain.com" /> 
    </conditions> 
    <action type="Rewrite" url="/TestImage.jpg" appendQueryString="false" /> 
</rule> 

如果網站不綁定到該服務了其他內容,你可能也下降了規則的條件,並使其更簡單其他域名:

<rule name="Rewrite Test" enabled="true" patternSyntax="Wildcard" stopProcessing="true"> 
    <match url="*" /> 
    <action type="Rewrite" url="/TestImage.jpg" appendQueryString="false" /> 
</rule> 

重定向能夠正常工作,因爲您可以(當然)將客戶端重定向到同一個域上的URL,也可以重定向到另一個域上的URL。