(如何)我应该从默认日历页面重定向用户?

时间:2016-09-20 12:56:00

标签: redirect seo

我的日历位于http://domain.com/calendar/。这显示了当前月份的事件。其他月份可在

查看
  • http://domain.com/calendar/january/
  • http://domain.com/calendar/february/

这意味着,目前(即9月),网址http://domain.com/calendar/september/http://domain.com/calendar/显示重复的内容。我最初的想法是将用户从http://domain.com/calendar/重定向到http://domain.com/calendar/{current-month}/。但是,这会导致搜索引擎始终将用户发送到他们上次索引的月份的URL而不是主日历URL。

禁用主日历网址不是一个选项,因为这是通过文献链接的。

处理此方案的最佳方法是什么?我应该从主网址重定向到特定月份吗?如果是这样,这应该是临时重定向(即302)吗?我怀疑不是因为这不是真正的重定向类型。或者这只是我不应该担心的事情?

我并不担心在此阶段将年份添加到网址中。

3 个答案:

答案 0 :(得分:1)

我会将您当前的日历路线保留为/ calendar,而不是重定向到/ calendar / year / {currentmonth}页面。

在前几个月,您应该创建一个存档以及年/日历/年/月

如果您有某种类型的指示,即/ calendar路线是一个唯一的静态路线,它始终包含最新的事件(以页面标题,内容等形式),它始终可以被编入索引就像在搜索引擎中一样。

我不会从存档页面重定向到当前日历。您可以通过执行诸如将Archive:添加到页面标题并允许对其编制索引来区分存档,因为它将在下个月成为其自己的唯一内容。

答案 1 :(得分:0)

我会设置我的路线,以便月参数是可选的。如果用户导航到http://domain.com/calendar/,我的控制器将默认使用当前月份。如果用户导航到http://domain.com/calendar/{month}/,则会使用网址中提供的月份并显示该月份。

最终,我会有一个端点用于显示接受可选路由参数的日历,以显示特定月份。

以下是使用C#和Mvc创建路径的方法:

public class CalendarController : Controller
{
    public ActionResult Index(string month)
    {
        if(month == "")
        {
            month = DateTime.Today.ToString("MMMM");
        }

        ViewBag.Month = month;
        // ViewBag.Data = getData(month); // method to get events for month

        return View();
    }
}

我的路线看起来像:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        // /calendar/october
        routes.MapRoute(
            "Calendar",
            "calendar/{month}",
            new {controller = "Calendar", action = "Index", month = ""});
    }
}

答案 2 :(得分:0)

如果您在超时10毫秒后在javascript(<body onload="setTimeout(document.location.href=get_next_month_url_function_you_make(),10)">)中添加重定向,那么搜索引擎将继续链接到/ calendar /(您应该给出适当的超时元标记)和用户将被重定向到月份的详细信息页面?