在请求 XML 页时提供 ASX 页

本文关键字:ASX XML 请求 | 更新日期: 2023-09-27 17:56:29

我有一个.ashx文件,为我们的rss提要和站点地图生成xml。我们的新SEO人员告诉我们,".ashx"扩展名正在伤害我们(例如,坚持现有的"sitemap.ashx"文件应该被称为"sitemap.xml",而rss feed是"site.rss")。

我工作的组织几乎将我与托管和发展

混为一谈,而托管并不是我有很多经验的东西(我过得去,但不是专家)。

我知道这很可能是 IIS 中的事情,这样对一件事的请求就会得到另一件事的服务,但有人可以快速推动我朝着正确的方向前进吗?我现在甚至很难想出一些东西来谷歌!

编辑:在这种情况下,它是IIS7和 ASP.net 3.5

在请求 XML 页时提供 ASX 页

听起来你想暴露/服务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>
不需要

重写,你可以配置.ashx来响应web.config中的.rss或.xml。 您始终可以添加查询字符串参数以响应不同的逻辑。

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

。等

您正在寻找的内容称为"URL 重写",虽然 IIS 没有提供开箱即用的功能,但您可以通过多种方式实现它。

有了Apache,你就有了mod_rewrite。使用IIS(从版本7开始),我认为您有模块。查看: IIS URL 重写模块 2

如果您正在寻找更多信息或打算自己推出,请查看此处:ASP.NET URL 重写。

如果在共享托管服务器上托管网站,则可能无法在 IIS 中安装自定义模块,但可以将其部署为应用程序的一部分。

IIS URL Rewrite 2.0?

顺便说一句,它通常在共享主机上安装和设置,例如 godaddy.com 或 discountasp.net,因此您只需要编写配置即可。

如果你足够幸运地使用 MVC,你可以相对轻松地通过 global.asax 中的路由表添加重定向 ASP.NET。

从内存中,您可以添加如下路线:

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

这将捕获对 specificname 的任何请求.xml它们将转到一个名为 home 的控制器,并执行重新路由操作,您可以将其重定向到您的处理程序或将处理程序代码移动到。

-编辑-也就是说,我可能会选择p.campbell提供的静态路由选项。