обслуживать страницу Ashx при запросе страницы XML - PullRequest
2 голосов
/ 16 мая 2011

У меня есть файл .ashx, генерирующий xml как для нашего RSS-канала, так и для нашей карты сайта. Наш новый SEO-парень говорит нам, что расширение «.ashx» вредит нам (например, настаивает на том, что существующий файл «sitemap.ashx» должен называться «sitemap.xml», а фид rss - «site.rss»). ).

Организация, в которой я работаю, в значительной степени смешала меня с хостингом, а также с разработкой, и хостинг - это не то, с чем у меня большой опыт (я справляюсь, но не являюсь экспертом).

Я знаю, что в IIS это может быть что-то такое, что запросы на одну вещь удовлетворяются другой, но может ли кто-нибудь быстро подтолкнуть меня в правильном направлении? У меня проблемы даже с тем, чтобы придумать что-нибудь для Google прямо сейчас!

РЕДАКТИРОВАТЬ: В данном случае это IIS7 и ASP.net 3.5

Ответы [ 5 ]

3 голосов
/ 16 мая 2011

Звучит так, как будто вы хотите показать / подать http://foo.com/site.rss, но на самом деле выполнить http://foo.com/bar.ashx.

Для IIS7, реализовать модуль перезаписи URL с помощью «Правило с картой перезаписи» .

Попробуйте это в своем web.config:

<system.webServer>
<rewriteMaps>
    <rewriteMap name="StaticRedirects">
        <add key="/site.rss" value="/bar.ashx" />
    </rewriteMap>
</rewriteMaps>
</system.webServer>
2 голосов
/ 16 мая 2011

перезапись не требуется, вы можете настроить .ashx для ответа на .rss или .xml в web.config. Вы всегда можете добавить параметры строки запроса, чтобы ответить на другую логику.

<system.web>
    <httpHandlers >
        <add type="[ashx class name]" verb="*" path="*.rss"/>

    </httpHandlers>

... ЭСТ

0 голосов
/ 16 мая 2011

Если вам повезло с использованием ASP.NET MVC, вы можете относительно легко добавить перенаправление через таблицу маршрутов в global.asax.

Из памяти вы добавляете маршрут следующим образом:

routes.MapRoute(
"XML Reroute",
"specificname.xml",
new { controller = "Home", action = "Reroute" });

Это будет захватывать любые запросы для specificname.xml, и они будут отправляться в контроллер, называемый home, с действием перенаправления, которое вы можете просто перенаправить на ваш обработчик или переместить код обработчика в.

-Edit- Тем не менее, я бы, вероятно, выбрал вариант статической маршрутизации, предложенный p.campbell.

0 голосов
/ 16 мая 2011

IIS URL Rewrite 2.0?

Кстати, он обычно устанавливается и настраивается на общих хостингах, таких как godaddy.com или discountasp.net, поэтому вам нужно всего лишь написать конфигурацию.

0 голосов
/ 16 мая 2011

То, что вы ищете, называется " перезапись URL ", и, хотя IIS не предоставляет готовые решения, есть способы, которыми вы можете достичь этого.

С Apache,у вас был mod_rewrite.С IIS (начиная с версии 7), который, я полагаю, у вас есть Модули .Взгляните на: IIS URL Rewrite Module 2

И если вам нужна дополнительная информация или вы планируете свернуть свои собственные, посмотрите здесь: Перезапись URL-адресов в ASP.NET .

Если вы размещаете веб-сайт на сервере общего хостинга, вы не сможете установить пользовательский модуль в IIS, но вы сможете развернуть его как частьваше заявление.

...