Mi piacerebbe avere il seguente collegamento "http://mywebsite.com/robots.txt" collegato a un file statico ~/Content/robots.txt.Instradamento di file statici in ASP.NET MVC 3 come robots.txt
Come posso fare questo?
Grazie, Merijn
Mi piacerebbe avere il seguente collegamento "http://mywebsite.com/robots.txt" collegato a un file statico ~/Content/robots.txt.Instradamento di file statici in ASP.NET MVC 3 come robots.txt
Come posso fare questo?
Grazie, Merijn
Si potrebbe installare URL Rewrite modulo: http://www.iis.net/downloads/microsoft/url-rewrite
ricordare che questo modulo funziona su IIS e non su Cassini/IIS Express.
E aggiungere seguente regola al tuo web.config alla sezione <system.webServer>
<rewrite>
<rules>
<rule name="robots" stopProcessing="true">
<match url="robots.txt" />
<action type="Rewrite" url="/Content/robots.txt" />
</rule>
</rules>
</rewrite>
ho controllato sul nuovo MVC 3 .NET progetto e entrambe le risposte url con la stessa lima: mywebsite.com/robots .txt
mywebsite.com/Content/robots.txt
Bello ma sii cauto con Rewrite 1.0 combinato con i ruoli di Azure Web :) –
Si tratta ancora di un problema con URL Rewrite 2.0? – jbolanos
Soluzione 1: se si specifica l'URL. Il browser lo richiederà a IIS o al webserver. MVC non partecipa al file di lettura ecc. Fornisce queste richieste a IIS da gestire. È necessario assegnare l'autorizzazione alla cartella.
Soluzione 2: leggere il file in PresentationModel se si dispone. leggi questo file in Chunk e torna come Tipo di file al browser.
Spero che ti dia qualche direzione.
È possibile impostare la richiesta di instradamento per i file su disco. Di default il sistema di routing controlla se l'url corrisponde al file del disco prima di valutare i percorsi dell'applicazione. Se c'è una corrispondenza, il file del disco viene servito e le rotte non vengono utilizzate. Tuttavia, questo può essere riverito in modo da esaminare le rotte prima che i file del disco siano controllati impostando la proprietà RouteExisitingFiles
di RouteCollection
a true
. Posiziona questa dichiarazione vicino all'inizio del metodo RegisterRoutes: sembra essere una convenzione per le app mvc. Quindi si definisce un percorso per i file del disco. Siate consapevoli di ciò quando ci sono alcuni effetti indesiderati perché la riuta potrebbe provocare altri tipi di URL.
L'aggiunta di un percorso come questo dovrebbe fare il trucco. In questo modo è possibile pubblicare qualsiasi file .txt statico come robots.txt.
routes.IgnoreRoute("{resource}.txt");
Questo non funziona, penso che sia necessario utilizzare gli altri metodi elencati di seguito. Suggerirei Url Rewrite Module. –
Questa tecnica ha funzionato benissimo per me. (L'ho messo nella parte superiore del file RouteConfig.cs nel metodo RegisterRoutes().) – Greg
routes.MapRoute("Robots","robots.txt");
sono stato in grado di farlo da sentieri di riscrittura in un gestore di eventi per BeginRequest
in Global.asax.
BeginRequest += delegate
{
switch (Request.RawUrl.ToLowerInvariant())
{
case "/favicon.ico":
Context.RewritePath("~/Content/favicon.ico");
return;
case "/robots.txt":
Context.RewritePath("~/Content/robots.txt");
return;
}
};
assomiglia a nessuno in realtà letto la tua domanda – lostinplace
questo è meglio gestita in una sorta di modulo URL rewrite ... sarebbe meno overhead. – JayC