2016-03-21 17 views
0

Ich versuche zu .aspx Seiten mit .html Erweiterungen eingehende HTTP-Anforderungen zu zeigen und neu schreiben die URLs im Browser, so dass weder die .html oder .aspx Erweiterungen werden angezeigt.Stripping .html Erweiterungen von Anfragen und .html-Anfragen umleiten Seiten .aspx

Details:

Wenn ein Benutzer beispielsweise localhost:123/lorem/ipsum.html, würde ich wieder die ~/Views/lorem/ipsum.aspx Seite. Die URL sollte wie folgt aussehen: localhost:123/lorem/ipsum.

Eine Hälfte davon wird mit dem AspNet.FriendlyUrls Paket behandelt. In meiner RouteConfig.cs Datei, habe ich eine Reihe von Regeln wie folgt aus:

routes.MapPageRoute("Ipsum", "lorem/ipsum", "~/Views/lorem/ipsum.aspx");

Dies stellt sicher, dass, wenn ein Benutzer sendet eine Anforderung aus, um localhost:123/lorem/ipsum, dann sind die .aspx Seite geladen wird mit der richtigen URL Nomenklatur im Browser Fenster.

Ich möchte herausfinden, wie man dies auf eingehende Anfragen mit .html am Ende zu erweitern.

routes.MapPageRoute("Ipsum Html Redirect", "lorem/ipsum.html", "~/Views/lorem/ipsum.aspx");

: Ich habe versucht, das Hinzufügen eines weiteren RouteConfig.cs Regel Benutzer von .html zu .aspx Seiten zu umleiten, mit der Hoffnung, die URL URL Schreibungen in der Web-config korrekt angezeigt werden, aber in einer 404 auf die Seite geführt Navigation

Ich bin sehr verwirrt über die Routing-Pipeline. Haben die Regeln zum Umschreiben/Umleiten von Web.config Vorrang vor den Regeln RouteConfig.cs? Gibt es eine Möglichkeit, mein Problem zu beheben, indem Sie eine Web.config Rewrite oder Redirect-Regel hinzufügen, so dass dies mit meinen RouteConfig.cs Regeln funktioniert?

Antwort

0

Ich endete mit this Blog-Link von Scott Hanselman, um eine Lösung für das Problem zu finden. Die Lösung war es, diesen Code in die Web.config Datei hinzuzufügen:

<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="extensionless" stopProcessing="true"> 
        <match url="(.*)\.html$" /> 
        <action type="Redirect" url="{R:1}" redirectType="Permanent" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer>