2015-04-28 79 views
2

我要定義控制器和動作添加到URL基本URL重寫 - 添加默認頁域

localhost:6473 -> localhost:6473/Beta/Index 

與URL在Web.config中重寫,但由於某種原因,這是行不通的

<rewrite> 
    <rules> 
    <rule name="Beta_Local" stopProcessing="true"> 
     <match url="(localhost*)" ignoreCase="true" /> 
     <conditions> 
     <add input="{HTTP_HOST}" pattern= "^localhost:[0-9]{4}$" negate="true"/> 
     </conditions> 
     <action type="Redirect" url="{R:0}/Beta/Index" redirectType="Permanent" /> 
    </rule> 
    </rules> 
</rewrite> 

回答

2

匹配網址不應包含域名,但路徑。如果你想捕捉根/你需要

<match url="^$" /> 

http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference

而且,看來你並不需要附加條件的本地主機。

完整的規則可能是以下

<rewrite> 
    <rules> 
    <rule name="Beta_Local" stopProcessing="true"> 
     <match url="^$" /> 
     <action type="Redirect" url="/Beta/Index" redirectType="Permanent" /> 
    </rule> 
    </rules> 
</rewrite> 

附:

如果您需要做的是在MVC的方式,你可以使用路由

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Beta", action = "Index", id = UrlParameter.Optional } 
); 
+0

感謝的。它確實有效。做路由已經太晚了,因爲路由引擎添加Beta和Index對於最終用戶來說是不可見的,但我希望確切的URL域/ Beta/Index作爲默認值始終可見(對於谷歌分析) – Andriy