2016-09-20 21 views
0

我有一个日历,位于http://domain.com/calendar/。这显示了当月的事件。其他月份可以在(How)应该将用户从我的默认日历页面中重定向吗?

  • 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)?我怀疑这并不是真正的重定向类型。或者这只是我不应该担心的事情?

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

回答

0

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

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

这是我将如何使用创建路由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 = ""}); 
    } 
} 
0

,如果你在JavaScript(<body onload="setTimeout(document.location.href=get_next_month_url_function_you_make(),10)">)上传的内容重定向后一个10毫秒的超时,所以搜索引擎将继续链接到/日历/(你应该给一个适当的超时元标记),用户将被重定向到月份的详细信息页面?

1

我会在/ calendar上保留当前的日历路由,而不是重定向到/ calendar/year/{currentmonth}页面。

对于前几个月,你应该用年/日历/年/月一起创建归档

如果你有一些类型的指示,该/日历路线是将始终包含一个独特的,静态路由上调最新的事件(以页面标题,内容等形式),它总是可以在搜索引擎中索引。

我不会从归档页面重定向到当前日历。您可以通过做一些事情来区分档案,例如预先存档:归档页面标题并允许将其归档,因为它将在下个月成为它自己的独特内容。

相关问题