我们已经将该结构重新设计为具有多个业务部门的网站.现在我想将(301)重定向到新页面.
IE:
www.example.com/abc
现在是www.example.com/default.aspx?article=abc
我曾尝试使用Global.asax来实现这一点,并且在我通过它进行调试时它可以正常工作.
if (Request.RawUrl.Contains("abc")) { Response.RedirectLocation = "/default.aspx?article=abc"; Response.StatusCode = 301; Response.StatusDescription = "Moved"; Response.End(); }
所以http:// localhost:1234/example/abc正确重定向,但是(其中1234是调试服务器的端口)
http:// localhost/example/abc不重定向,它给了我404.
有任何想法吗?
附加信息:如果我转到http://localhost/example/abc/default.aspx,那么它会正确重定向.
好吧,如果端口指示您正在使用内置Web服务器(VS附带的那个),这可能有效,因为它始终通过ASP.NET框架路由请求.
以/ abc结尾的请求不会自动路由到ASP.NET框架,因为IIS可能不会"知道"您希望它们.您需要检查IIS设置以确保此类请求被路由到aspnet_isapi.dll
编辑:要完成此任务,您需要添加通配符映射:
在IIS管理器中,展开本地计算机,展开"网站"文件夹,右键单击所需的网站或虚拟目录,然后单击"属性".
单击相应的选项卡:主目录,虚拟目录或目录.
在"应用程序设置"区域中,单击"配置",然后单击"映射"选项卡.
要安装通配符应用程序映射,请执行以下操作:
在"映射"选项卡上,单击"添加"或"插入".
在"可执行文件"文本框中键入DLL的路径,或单击"浏览"导航到该文件夹(例如,ASP.NET 2.0 dll位于c:\ windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll上机)
对于扩展,当然使用".*"而不带引号
选择要查找的动词(GET,HEAD,POST,DEBUG是ASP.NET的常用动机,您决定)
确保选中"脚本引擎"或"应用程序引擎"
取消选中"检查该文件是否存在"
点击没关系.
我可能会对此不以为然,但如果我是,希望有人会纠正我.:)