【问题标题】:Rewriting a GET URL重写 GET URL
【发布时间】:2011-09-07 18:49:18
【问题描述】:

我正在使用 codeigniter 创建一个搜索页面。我想重写一个 GET url 来使用 CI。

例子

http://mysite.com/en/search?search=widgets

变成

http://mysite.com/en/search/widgets

我以为我可以在 routes.php 中做到这一点,但它似乎没有抓住 ? 之后的东西。所以现在我想在.htaccess 中重写。这是一个好主意吗?重写规则是什么?

【问题讨论】:

  • 在您对新解决方案过于熟悉之前,请尝试在搜索词中使用引号(例如)。 CI 会抛出一个致命错误,即使你正在对它们进行编码。 $_GET 不会发生这种情况。

标签: php .htaccess codeigniter


【解决方案1】:

您应该只使用 CI 路由协议。无论如何,如果你想使用 .htaccess 是这样的:

RewriteEngine On
RewriteRule ^en/search/([a-z]+)  /en/search?search=$1 [L]

【讨论】:

    【解决方案2】:
    $route['en/search/(:any)'] = "en/search/$1";
    

    基本上是用 /en/search/something 将任何内容重新映射到 en 类,搜索方法和搜索查询将作为参数传递。

    通常不建议使用 :any,但如果您想更具体地了解您想要允许的字符,也可以使用自定义正则表达式。

    【讨论】:

    • 为什么不推荐使用 (:any)?允许的字符已经受到$config['permitted_uri_chars'] 的限制
    【解决方案3】:
    $searchtext = $this->url->segment(2);
    

    应该在 codeigniter 中获取值“widget”。 (对不起,如果我把问题弄错了)。

    【讨论】:

      猜你喜欢
      • 2012-04-03
      • 1970-01-01
      • 2013-08-12
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 2014-05-16
      • 1970-01-01
      相关资源
      最近更新 更多