我想鏈接到靜態文件〜/ Content/robots.txt的以下鏈接「http://mywebsite.com/robots.txt」。在robots.txt中路由ASP.NET MVC 3中的靜態文件
我該怎麼做?
感謝, Merijn
我想鏈接到靜態文件〜/ Content/robots.txt的以下鏈接「http://mywebsite.com/robots.txt」。在robots.txt中路由ASP.NET MVC 3中的靜態文件
我該怎麼做?
感謝, Merijn
你可以安裝URL重寫模塊: http://www.iis.net/downloads/microsoft/url-rewrite
記住這個模塊工作在IIS上,而不是卡西尼/ IIS快遞。
和你的web.config添加以下規則第<system.webServer>
<rewrite>
<rules>
<rule name="robots" stopProcessing="true">
<match url="robots.txt" />
<action type="Rewrite" url="/Content/robots.txt" />
</rule>
</rules>
</rewrite>
我檢查新的MVC 3 .NET項目,並與同一個文件的URL響應: mywebsite.com/robots .TXT
mywebsite.com/Content/robots.txt
不錯,但要謹慎使用Rewrite 1.0和Azure Web角色:) –
這仍然是URL Rewrite 2.0的問題嗎? – jbolanos
解決方法1:如果您指定的URL。瀏覽器將向IIS或網絡服務器請求此操作。 MVC不參與閱讀文件等。它將這些請求提供給IIS進行處理。您需要爲文件夾分配權限。
解決方案2:如果有,請閱讀PresentationModel中的文件。在Chunks中讀取此文件並將其作爲文件類型返回給瀏覽器。
我希望它會給你一些方向。
您可以設置磁盤文件的路由請求。默認情況下,路由系統會在評估應用程序的路由之前檢查url是否與磁盤文件匹配。如果存在匹配,則磁盤文件被提供並且不使用路由。但是,可以通過將RouteCollection
的RouteExisitingFiles
屬性設置爲true
來檢查磁盤文件之前查看路由,以便查看路由。將此語句放在RegisterRoutes方法的頂部 - 這似乎是mvc應用程序的慣例。然後你爲磁盤文件定義一個路由。請注意,這樣做時可能會產生一些不可預見的效果,因爲分歧可能會捕獲其他類型的URL。
添加這樣的路線應該有所斬獲。這樣可以提供任何靜態.txt文件,如robots.txt。
routes.IgnoreRoute("{resource}.txt");
這不起作用,我想你需要使用下面列出的其他方法。我會建議Url重寫模塊。 –
這個技巧對我很好。 (我把它放在RegisterRoutes()方法的RouteConfig.cs文件的頂部。) – Greg
routes.MapRoute("Robots","robots.txt");
我能夠通過重寫路徑中的事件處理程序在Global.asax中做到這一點的BeginRequest
。
BeginRequest += delegate
{
switch (Request.RawUrl.ToLowerInvariant())
{
case "/favicon.ico":
Context.RewritePath("~/Content/favicon.ico");
return;
case "/robots.txt":
Context.RewritePath("~/Content/robots.txt");
return;
}
};
看起來竟沒有一個人讀你的問題 – lostinplace
這在某種URL重寫模塊更好地處理......那就更少的開銷。 – JayC