我有一个.ashx文件为我们的rss feed和我们的站点地图生成xml。我们新的SEO人告诉我们“.ashx”扩展程序正在损害我们(例如,坚持认为现有的“sitemap.ashx”文件应该被称为“sitemap.xml”,并且rss提要是“site.rss” )。
我工作的组织几乎把我和主机以及开发人员混为一谈,托管并不是我有很多经验(我得到的,但不是专家)。
我知道这可能是IIS中的某些内容,以至于对一件事的请求得到了另一件事,但有人可以给我一个快速推动正确的方向吗?我现在很难找到谷歌的东西!
编辑:在这个例子中它是IIS7和ASP.net 3.5
答案 0 :(得分:3)
听起来您想要公开/提供http://foo.com/site.rss
,但实际上是执行http://foo.com/bar.ashx
。
IIS7 , implement the URL Rewriting module with "Rule with rewrite map"。
在你的web.config中试试这个:
<system.webServer>
<rewriteMaps>
<rewriteMap name="StaticRedirects">
<add key="/site.rss" value="/bar.ashx" />
</rewriteMap>
</rewriteMaps>
</system.webServer>
答案 1 :(得分:2)
不需要重写,您可以配置.ashx以响应web.config中的.rss或.xml。您始终可以添加查询字符串参数以响应不同的逻辑。
<system.web>
<httpHandlers >
<add type="[ashx class name]" verb="*" path="*.rss"/>
</httpHandlers>
... ECT
答案 2 :(得分:0)
您正在寻找的内容称为“URL Rewriting”,虽然IIS不提供开箱即用的功能,但您可以通过多种方式实现它。
使用Apache,你有mod_rewrite。使用IIS(从版本7开始),我认为你有模块。看看:IIS URL Rewrite Module 2
如果您正在寻找更多信息,或者您打算自己动手,请在此处查看:URL Rewriting in ASP.NET。
如果您在共享托管服务器上托管网站,则可能无法在IIS中安装自定义模块,但您可以将其作为应用程序的一部分进行部署。
答案 3 :(得分:0)
答案 4 :(得分:0)
如果你很幸运能够使用ASP.NET MVC,你可以通过global.asax中的routes表相对轻松地添加重定向。
从内存中添加如下路线:
routes.MapRoute(
"XML Reroute",
"specificname.xml",
new { controller = "Home", action = "Reroute" });
这将捕获对specificname.xml的任何请求,并且他们将转到名为home的控制器,其中包含重新路由的操作,您可以将其重定向到处理程序或将处理程序代码移动到。
<强> - 编辑 - 强> 也就是说,我可能会选择p.campbell提供的静态路由选项。