我在我的网络应用程序中使用漂亮的URL,一个例子是'forum / post / 1',它在Forum模块中调用PostController,后者加载id = 1的帖子。这是我需要的,但该帖子也可以从'forum / post / view / id / 1'访问。这很糟糕,因为搜索抓取工具不喜欢从多个网址访问同一页面时,对吗?
我正在使用支持'useStrictParsing'选项的Yii框架,该选项告诉传入请求必须匹配至少一条“漂亮”路线,否则请求将失败,但是404.但这不是一个完美的解决方案,因为我没有针对每个控制器/操作的漂亮URL。
理想情况下,框架应使用301状态代码将“forum / post / view / id / 1”重定向到“forum / post / 1”。你是怎么解决这个问题的?这不是Yii / PHP特定的问题,您的框架/工具如何处理它?</ p>
答案 0 :(得分:1)
确保搜索引擎仅将一个页面排在另一个网页上的最佳方式,如果有多种查看内容的方法是在文档标题内的规范标记
<link rel="canonical" href="http://www.mydomain.com/nice-url/" />
这对于基于Windows的系统非常有用,因为IIS对其网页不区分大小写,但Web标准区分大小写。
所以
这些都被Google视为不同的网页,然后您会因为网站内容重复而被标记为具有重复内容的网站,但由于上述案例中的每个网页都具有相同的规范元标记,因此不具有规范性url是搜索引擎将使用的唯一一个。
答案 1 :(得分:0)
如果没有人链接到您的非漂亮网址,搜索引擎将永远不会知道它们存在。
如果您确实想要消除它们,可以通过在Web服务器的配置文件中添加别名来绕过Web框架;该URL将在到达框架之前被重定向。
像Django这样不提供“魔术”路由的框架不会遇到这个问题,唯一存在的路由是你手动定义的路径。在这种情况下,您可以为非漂亮的URL定义一个返回适当重定向的视图。