[英]IIS Rewrite not working (but redirection does)
我正在嘗試使用Rewrite Module 2.0進行URL 重寫,但我沒有運氣讓它工作。 我要做的是將端口80上的所有對Web應用程序的調用重新寫入IIS中托管的其他應用程序(或者可能在網絡上的不同服務器上)。 使用IIS提供的GUI我創建了以下規則:
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="site1/(.*)" />
<action type="Rewrite" url="http://localhost:7001/{R:1}" />
</rule>
</rules>
</rewrite>
安靜簡單,但不幸的是它不起作用。 另一方面,當我將操作類型更改為Redirect
,它可以正常工作。
可能是什么問題呢?
昨天我遇到了同樣的問題,我花了很長時間才弄明白。
這里的關鍵是你的重寫動作中有一個http://
前綴; 這使得這是一個需要由應用程序請求路由處理的特殊情況。 第一步是確保安裝了“應用程序請求路由”模塊。 您可以在https://www.iis.net/downloads/microsoft/application-request-routing找到該模塊。 安裝完成后,轉到IIS Web服務器(從您的網站升級),然后打開“應用程序請求路由緩存”功能。 從右側的操作中,選擇Server.Proxy.Settings
,並確保選中“啟用代理”復選框。 這允許將URL重寫任務重新路由到應用程序請求路由,並且您的反向代理應該適用於外部請求。
這個想法來自2009年的優秀博客文章: http : //ruslany.net/2009/04/10-url-rewriting-tips-and-tricks/
當我試圖解決同樣的問題時偶然發現了這篇舊帖子。
解決了!
在IIS服務管理器中使用重寫URL功能,我創建了一個友好的URL規則。
這工作正常,當我查看web.config文件(www root)中的規則時,它顯示了1個重定向規則和1個重寫規則。
我編輯了這個以適應1場比賽。 然后我只是復制了這段代碼,編輯了每個代碼的產品ID。 示例如下:
<rule name="RedirectUserFriendlyURL1" stopProcessing="true">
<match url="^product\.php$" />
<conditions>
<add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
<add input="{QUERY_STRING}" pattern="^id_product=\b35\b" />
</conditions>
<action type="Redirect" url="990mm-bohemia-cast-iron-electric-radiator" appendQueryString="false" />
</rule>
第一條規則在URL中查找字符串"product.php"
並且"id_product=35"
,然后重定向到目前不存在的"990mm-bohemia-cast-iron-electric-radiator"
。 然后(見下文)
<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
<match url="^\b990mm-bohemia-cast-iron-electric-radiator\b" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="product.php?id_product=35" />
</rule>
此規則將"product.php?id_product=35"
位重寫為“990mm-bohemia-cast-iron-electric-radiator”,為重定向創建新位置。
url重寫我遇到404錯誤。 也許你可以找到它usfull。 請訪問https://stackoverflow.com/a/47988082/5784543查看
確保MVC路由不會竊取您的請求。 要防止這種情況發生,請忽略您嘗試重寫的路徑:
RouteTable.Routes.Ignore("blog/{*pathInfo}");
靈感來自: https : //sitecore.stackexchange.com/questions/3645/how-to-setup-a-reverse-proxy-with-sitecore
將重寫URL更改為AbsolutePath,而不是將http:// ...更改為
它對我有用,但就我而言,我已經改寫為固定的網頁。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.