2016-03-21 4 views
0

Я пытаюсь указать входящие запросы HTTP с .html расширениями .aspx страниц, и переписать URL-адрес в браузере, например, что ни .html или .aspx отображаются расширения.Зачистка .html расширения из запросов и перенаправляют запросы на .html страниц .aspx

Детали:

Когда пользователь запрашивает, скажем, localhost:123/lorem/ipsum.html, я бы вернуть ~/Views/lorem/ipsum.aspx страницу. URL должен выглядеть как localhost:123/lorem/ipsum.

Одна половина из них обрабатывается пакетом AspNet.FriendlyUrls. В моем RouteConfig.cs файле, у меня есть набор правил, как это:

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

Это гарантирует, что если пользователь отправляет запрос прочь к localhost:123/lorem/ipsum, затем .aspx загрузки страницы с правильной URL номенклатурой в браузере окно.

Я хочу найти способ распространить это на входящие запросы с .html в конце. Я попытался добавить еще один RouteConfig.cs правило для перенаправления пользователей от .html до .aspx страниц, в надежде, используя URL переписывает в веб-конфигурации для корректного отображения URL, но перейти на страницу в результате 404:

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

Я очень смущен о трубопроводе маршрутизации. Используются ли правила перезаписи/переадресации Web.config в соответствии с правилами RouteConfig.cs? Есть ли способ исправить мою проблему, добавив правило переписывания или перенаправления Web.config, так что это работает с моими правилами RouteConfig.cs?

ответ

0

Я закончил с использованием ссылки this от Скотта Гензельмана, чтобы найти решение проблемы. Решением было добавить этот код в файл Web.config:

<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>