【发布时间】:2019-10-26 02:07:33
【问题描述】:
我有一个以索引视图列出视频的页面。 该视图可按多个指标过滤,例如“最新视频优先”和“排名最高的视频优先”。用户可以从这些选项中进行选择。
过滤器信息存储在用户会话中。为了控制会话参数,当用户单击过滤器按钮时,会调用不同的路由,例如“domain.com/videos/newest”或“domain.com/videos/ranking”。
取决于调用哪个路由,服务器会更改会话参数。
事实上,相同的页面已呈现,但视频以不同的顺序列出。这会导致重复的页面标题、元描述和类似的东西。应该避免这种情况。我想要一个路由“domain.com/videos”而不需要额外的过滤器控制参数。
显然有不同的方法:
坚持目前的解决方案,提供不同的路线,通向相同的渲染页面,并处理重复的内容。
使用像
domain.com/videos?filter=newest这样的GET参数,从SEO的角度来看也不好。使用 Cookies 将信息存储在每个 Requestheader 中,这导致我需要 Cookie 协议消息,并使页面体验变得丑陋。
...
是否有处理所描述问题的建议?
更新
@Tim Lewis 建议(非常感谢您的回复):
如果你不想要 URL 参数,你可以做一个 POST 请求,将这些过滤/搜索/排序值存储在 Laravel 的会话中,然后在 GET 请求中引用它们; $sort = session()->get("排序");或类似的。它们不会出现在 URL 中,并且 SEO 会知道的唯一页面是 domain.com/videos
有更多的人去确认吗?
【问题讨论】:
-
如果你不需要 URL 参数,你可以做一个
POST请求,将这些过滤/搜索/排序值存储在 Laravel 的会话中,然后在GET请求中引用它们;$sort = session()->get("sort");或类似的。它们不会出现在 URL 中,并且 SEO 会知道的唯一页面是domain.com/videos -
请注意;此问题可能因“主要基于意见”而关闭;人们往往无法同意最好的方法是什么,所以我不知道你是否会得到一个明确的答案。如果您确实决定采用特定方法,请随时将其作为答案发布并关闭此问题。
-
我删除了固执己见的“最佳实践”部分,因为这足以回答
-
@Tim Lewis:这意味着打开一个新的 POST 路由来提交表单,并在通过调整会话变量对表单内容做出反应后硬重定向到先前的 GET 路由。在我看来,这似乎搞砸了,因为搜索引擎会跟踪新创建的 POST 路由并惩罚重定向。
-
@Machavity:我不是 100% 确认标题更改。这个问题几乎针对搜索引擎优化。避免 URL 参数通常会带来更好的解决方案,正如 Tim Lewis 提到的那样,但不会是 SEO 优化的最佳方法。我认为“处理过滤页面以进行 SEO 优化”或类似的内容会更好地描述问题。