首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将default.aspx重定向到根虚拟目录

问将default.aspx重定向到根虚拟目录
EN

Stack Overflow用户
提问于 2010-08-31 22:02:58
回答 6查看 7.8K关注 0票数 13

我在一个虚拟目录下的IIS7下运行了一个简单的ASP.NET 3.5应用程序。因此,我的应用程序的网址类似于http://example.com/app。我想301-将请求重定向到example.com/app/default.aspx到example.com/app以获得更好的SEO。我只能通过代码进行重定向,而不是通过任何IIS设置。我无法通过本文中提到的代码做到这一点:

http://www.4guysfromrolla.com/articles/072810-1.aspx

代码:

代码语言:javascript
复制
if (request.RawUrl.Equals("/default.aspx"))
{
newUrl = string.Format("{0}://{1}{2}",
                 request.Url.Scheme,
                 request.Url.Authority,
                 request.RawUrl.Remove(request.RawUrl.LastIndexOf("/default.aspx", StringComparison.OrdinalIgnoreCase)));

               context.Response.Status = "301 moved permanently";
               context.Response.AddHeader("Location", newUrl);
}

当应用程序位于虚拟目录下时,似乎会进入无限循环。即使在301重定向导致无限循环之后,request.RawUrl属性也始终返回"/default.aspx“。如何解决此问题?

谢谢,

Asif

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-09-01 20:20:54

只要你没有子目录,上面的代码就能正常工作。这是ASP.NET中的一个错误:当Request.RawUrl没有那个扩展名时,它不应该包含"/default.aspx“。我已经测试过您的代码,它在没有子目录的情况下工作得很好,但是如果default.aspx在一个目录下,Request.RawUrl对象将无法摆脱default.aspx,从而导致无限循环。

票数 2
EN

Stack Overflow用户

发布于 2011-04-01 04:21:35

对处理子目录和维护url变量进行了轻微的修改。可能存在更好的比较和替换功能,但这适用于我的IIS7。

代码语言:javascript
复制
if (Request.RawUrl.ToLower().Contains("/default.aspx"))  // use Contains instead of EndsWith to handle url vars
{
    string newUrl = string.Format("{0}://{1}{2}",
                    Request.Url.Scheme,
                    Request.Url.Authority,
                    Request.RawUrl.ToLower().Replace("default.aspx", ""));  // don't remove the trailing slash so url vars are maintained

    Response.Clear();
    Response.Status = "301 Moved Permanently";
    Response.AddHeader("Location", newUrl);
    Response.End();
}
票数 1
EN

Stack Overflow用户

发布于 2011-07-09 05:52:37

我尝试了URL重写方法。即这一条:

代码语言:javascript
复制
    <rule name="default page" stopProcessing="true">
      <match url="^default\.aspx$" />
      <action type="Redirect" url="{R:0}" redirectType="Permanent" />
    </rule>

但它让我的浏览器陷入了无限的重定向循环。我将其修改为以下内容,它工作得很好:

代码语言:javascript
复制
            <rule name="default page" stopProcessing="true">
                <match url="(.*)default.aspx$" />
                <action type="Redirect" url="{R:1}" redirectType="Permanent" />
            </rule>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3609763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档