【问题标题】:Shortening URL containing query strings缩短包含查询字符串的 URL
【发布时间】:2011-09-28 12:23:21
【问题描述】:

我正在使用 Codeigniter(PHP 框架)并且我有像 http://www.mysite.com/age/21/gender/female/name/jamie/city/boston/userid/1234 这样的 URL。

是否可以使 URL 对 SEO/用户更友好?像 http://www.mysite.com/1234-Jamie-Boston 一样,并且不知何故仍然能够传递在原始 URL 字符串中找到的值,例如 age =>21gender => female

【问题讨论】:

  • 你试过GET参数吗?或query string
  • 我尽量不使用查询字符串作为它反对 Codeigniter 框架的设计。我正在为一个站点编写一个搜索引擎,并且 URL 真的很长,在基于段的 URL 中有很多参数 http://www.mysite.com/searchterm/funny/since/2011/sortby/ratings/shorterthan/3/page/5
  • 抱歉,我没有看到 codeigniter 标签

标签: php javascript jquery mysql codeigniter


【解决方案1】:

我认为您可以 - 使用 mod_rewrite 将您的新网址从 http://www.mysite.com/1234-Jamie-Boston 重写为 http://www.mysite.com/user/1234。在您的用户控制器中,从 db 加载 id 为 1234 的用户控制器并设置他的所有其他属性

或者没有mod_rewrite - 您可以修改您的application/config/routes.php 文件,使用如下条目:

$route['(\d+)-.*'] = "users/display_user/$1";

这样,您的 SEO 友好 url 将指向类用户,方法 display_users,您将获得 id 作为参数

【讨论】:

  • +1 来自我。我使用了 routes.php 方法,并单独留下了我的 .htaccess 文件。在那种情况下,我能够以不同于我的“行业”页面的方式处理所有顶级子目录——本质上,可以很容易地为所有内容编写一个抽象类,并为行业编写一个不同的类。顺便说一句 - 注意你的路线顺序。
【解决方案2】:

PHP 的工作方式是,如果您向一个只需要两个参数的函数发送 15 个参数,那么 PHP 可以或多或少地“吞下”其他参数(它们仍然可以访问,但它们不是可选的)。在您的情况下,我将创建一个用户控制器,可能带有一个仅采用一个参数的显示功能,即用户 ID。这样,你就可以拥有/users/display/1234/whatever/you/would/like/zodiac_sign/stop_sign/favorite_letter/favorite%20punctuation/... 需要我继续吗?

您可以通过使用 $routes 配置文件来解决作为 URL 一部分的控制器/方法的需求...在这种情况下,我认为 user/display 不会真正伤害 SEO。我不会仅仅因为架构已经存在于 CodeIgniter 中而使用 mod_rewrite 来做到这一点。

【讨论】:

    猜你喜欢
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2019-12-01
    相关资源
    最近更新 更多