301重定向

我们网站有一个问题一直困扰着我,就是存在两个域名kuchechina.com,http://www.kuchechina.com/

虽说是以http://www.kuchechina.com/为主,但是site我们的域名,隔几页也会有不带www的。怕影响我们域名权重,决定做301重定向。

以前只是听说过301重定响,没有做过。这次做起来,还真遇到一些问题。

IIS重向定,设置比较麻烦,去网上查一些资料,参数都是一堆一堆的,又很难弄明白是怎么回事,就放弃了。下面就想做URL跳转。

URL跳转逻辑很简单,aspx请求可以用HttpModule接管,在HttpModule写跳转问题不是很容易解决了吗?

下面是我的代码

 

namespace Cars.UI
{
    
public class HttpModule : IHttpModule
    {
        
public void Init(HttpApplication application)
        {
            application.BeginRequest 
+= (new EventHandler(this.Application_BeginRequest));
        }
        
private void Application_BeginRequest(Object sender, EventArgs e)
        {
            HttpContext context 
= ((HttpApplication)sender).Context;

            
string redirectUrl = "http://www.kuchechina.com";
            
string requestUrl = context.Request.Url.ToString();

            redirectUrl 
= requestUrl.Replace("http://kuchechina.com", redirectUrl);

            context.Response.Clear();
            context.Response.StatusCode 
= 301;
            context.Response.Status 
= "301 Moved Permanently";
            context.Response.AddHeader(
"Location", redirectUrl);
            context.Response.End();
        }

        
public void Dispose()
        {
        }

    }

}

 

代码全总在这里,想了解的朋友可以下载

/Files/zhuyue/301Redirect.rar

实现起来简单,可问题又出现了,要是域名路径中带目录,如:kuchechina.com/News/没有页面文件,就返回404错误了。怎么办呢?问题不好解决。再研究研究IIS重定向吧。问题还真的搞定了

IIS设置如下:

参数意义

$S 传送与所请求 URL 的相匹配的后缀。匹配后缀是用重定向的 URL 代替之后,初始 URL 中所保留的部分。 如果 /Scripts 重定向到 /Newscripts,而原来请求的是 /Scripts/Program.exe,那么 /Program.exe 便是后缀。服务器自动执行后缀替换,$S 变量只能与其他变量结合使用。
$Q 传递来自初始 URL 的问号 (?) 和参数。 例如,如果原来的 URL 是 /Scripts/Myscript.asp?number=1,那么字符串“?number=1”映射到目标 URL。

posted @ 2010-08-24 15:59  逐月  阅读(339)  评论(0编辑  收藏  举报