我的日历位于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)吗?我怀疑不是因为这不是真正的重定向类型。或者这只是我不应该担心的事情?
我并不担心在此阶段将年份添加到网址中。
答案 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 /(您应该给出适当的超时元标记)和用户将被重定向到月份的详细信息页面?