zoukankan      html  css  js  c++  java
  • qeephp url美化之后的 SEO问题

    一个网站运营一段时间后,栏目设置很可能发生变化,此时就有可能导致 URL 变化。而 URL 变化的最大问题就是导致以前的连接失效,对用户体验非常不好,而且也会影响搜索引擎对网站的收录。所以我们必须保证以前的 URL 不失效。

    例如以前新闻页面的网址是 http://msplinks.com.cn/MDFodHRwOi8vbXkuY29tLzEyMzQ1Ni5odG1s,而现在是 http://msplinks.com.cn/MDFodHRwOi8vbXkuY29tL25ld3Mvc3BvcnRzLzEyMzQ1Ni5odG1s。对于这种需求,我们利用 URL 路由可以轻松搞定。

    先写两个规则:

    1. # 解析和生成新的新闻页面 URL
    2. news_page:
    3.   regex: '/news/([a-z]+)/([0-9]+)\.html'
    4.   config:
    5.     category: 1
    6.     news_id:  2
    7.   defaults:
    8.     controller: news
    9.     action:     show
    10. # 解析老的新闻页面 URL
    11. news_page_keep_old:
    12.   regex: '/([0-9]+)\.html'
    13.   config:
    14.     news_id:  1
    15.   defaults:
    16.     controller: news
    17.     action:     show
    复制代码

    上述两条规则,放在前面的优先级更高。

    当请求的 URL 是 http://msplinks.com.cn/MDFodHRwOi8vbXkuY29tLzEyMzQ1Ni5odG1s 时,前面的规则匹配失败,而后面的规则匹配成功。因此请求送给了 news 控制器的 show 动作方法处理,并且附带 news_id 参数。

    1. function actionShow()
    2. {
    3.     $news_id = intval($_GET['news_id']);
    4.     $news = News::find($news_id)->get();
    5.    
    6.     ... 显示新闻内容
    7. }
    复制代码

    这样就保证了原有 URL 的有效性。

    那么当请求是 http://msplinks.com.cn/MDFodHRwOi8vbXkuY29tL25ld3Mvc3BvcnRzLzEyMzQ1Ni5odG1s 时,前面的规则就匹配成功,此时就不会再匹配后面的规则。而请求还是 actionShow() 来处理。前面的规则多了一个 category 参数,这里并没有用上,直接忽略即可。但这个参数是必不可少的,会用于后面的 URL 生成。

    现在我们来看看模板中生成 URL 的代码:

    1. url('news/show', array(
    2.     'news_id' => $news->id,
    3.     'category' => $news->category_name
    4. ))
    复制代码

    可以看到,这里我们生成 URL 时使用了 category 参数,因此前面的规则会被用于生成 URL。最终我们会得到类似 http://msplinks.com.cn/MDFodHRwOi8vbXkuY29tL25ld3MvY2Fycy8yMzM0My5odG1s 这样的结果。

    现在我们已经完美的解决了问题:既保证了以前 URL 的有效性,又让访问者在访问老页面后可以通过页面中的 URL 导航到新格式的 URL 中。

    --------------------------------------

    URL 随心变

    除了 SEO,URL 路由还可以让我们随心所欲的构造 URL 地址。例如 http://msplinks.com.cn/MDFodHRwOi8vcWVlcGhwLmNvbS9jYXNlcy8xOQ== 这个 URL 规则是:

    1. cases_show:
    2.   pattern: "/cases/:id"
    3.   defaults:
    4.     controller: "cases"
    5.     action: "show"
    6.   config:
    7.     id: "[0-9]+"
    复制代码

    我们把规则改为:

    1. cases_show:
    2.   regex: '/mygod/show\-me\-the\-money/news\-sports\-(\d+)\.html'
    3.   defaults:
    4.     controller: "cases"
    5.     action: "show"
    6.   config:
    7.     id: 1
    复制代码

    这时 URL 就变成 http://msplinks.com.cn/MDFodHRwOi8vcWVlcGhwLmNvbS9teWdvZC9zaG93LW1lLXRoZS1tb25leS9uZXdzLXNwb3J0LTE5Lmh0bWw= 了。可以说和以前的 URL 简直是两码事。

    而这些修改和变化,完全不需要我们修改应用程序中的代码和模板代码,唯一需要改动的就是路有规则表。

  • 相关阅读:
    hrbust 1558 小背包(简单01背包)水坑
    hrbust 1174泉水(DFS深度优先搜索)
    HDU 1115
    HDU 4273
    HDU 2912
    POJ 3528
    HDU 1912
    HDU 4741
    HDU 4617
    POJ 1755
  • 原文地址:https://www.cnblogs.com/buffer/p/1715438.html
Copyright © 2011-2022 走看看