6

我用谷歌搜索了所有内容,并且阅读了很多不同的回复——有些我试图暗示但没有成功。我不是一个专业的程序员,但我感谢这个论坛里的人们教了我很多关于一切的东西,从 jquery 到 doctypes,等等!

我有一个用 VWD 2010 Express 开发的网站。我只想知道两件事:

  1. 我知道搜索引擎/重复内容同时拥有 yourdomain 和 www.yourdomain 是不好的,所以我想设置一个 301 重定向,这样如果最终用户在 mydomain 中键入,它们会自动重定向到 www.mydomain(使用万维网)。

  2. 我已经移动了一些不在根目录中但在文件夹中的页面。所以我想用新位置替换过时的页面。我想通过自动将它们从 www.mydomain/ services /engineering.aspx 重定向到 www.mydomain/ products /engineering.aspx 来做到这一点。

这很难吗?是否(推荐)使用 .htaccess、web.config 或其他东西?

感谢您花时间阅读本文,我真诚地感谢任何和所有反馈。

杰森韦伯

4

3 回答 3

8

除非我误解了 .htacess 是用于 Apache 的,并且如果您在 ASP.Net 中进行编码,您几乎肯定会使用 IIS。所以忽略你研究中的 .htaccess 东西。

您可以使用某种 URL 重写器进行重定向,但这会变得非常复杂。如果我是你,我会尽可能简单,并在 Page_Load 事件中进行旧页面 301 重定向,即

protected void Page_Load(object sender, System.EventArgs e)
{
   Response.Status = "301 Moved Permanently";
   Response.AddHeader("Location","http://www.domainname.com/new-page.aspx");
}

对于您的规范重定向(非 www 到 www),您可以在 Global.asax 文件中执行类似操作Application_BeginRequest以检测非 www 变体,即

if (HttpContext.Current.Request.Url.ToString().ToLower().Contains( 
    "http://mysite.com")) 
{ 
    HttpContext.Current.Response.Status = "301 Moved Permanently"; 
    HttpContext.Current.Response.AddHeader("Location", 
        Request.Url.ToString().ToLower().Replace( 
            "http://mysite.com", 
            "http://www.mysite.com")); 
} 

(这不是我的代码,它来自这里

这就是我无论如何都会做的——它的好处是易于理解,并且让你远离任何奇怪的 Web 服务器配置,我有时会发现它有点像黑匣子。

于 2012-01-07T20:07:40.230 回答
6

由于您使用的是 VWD 2010 Express,因此您将受益于使用 .NET4 方法 Response.RedirectPermanent(stringURL)。它是 HttpResponse 对象的一部分。

此处提供更多文档:http: //msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent.aspx

此功能与 Response.Redirect() 相同,但它会在执行重定向的同时向客户端发出 301 代码。

于 2012-01-07T20:18:40.270 回答
-1

在您想要重定向超过 301 的地方执行此操作

string url = "newpage.aspx";
        Response.Clear();
        Response.StatusCode = 301;
        Response.RedirectLocation = url.ToLower();
        Response.End();

然后使用 Chrome 中的检查工具并检查“网络”选项卡以查看状态代码。这个对我有用。

于 2017-06-21T09:27:45.603 回答