备用查询字符串格式


Alternative query string formats

我目前正在用Codeigniter构建一个Web应用程序。我注意到他们的文档更喜欢分段的 URL 而不是查询字符串,这是有道理的,因为它们更容易阅读并且看起来更好。前几天我也在浏览 threadless.com,真的很喜欢他们格式化查询的方式:

通常,查询如下所示:

http://www.threadless.com/catalog/index.php?type=guys&view=25&size=3xl

但是Threadless使用以下格式:

http://www.threadless.com/catalog/type,guys/view,25/size,3xl

他们如何获得这种格式?它是否涉及 .htaccess?这种格式是否适合 Codeigniter 或是否涉及自定义函数?

谢谢!

你可以在你可以拥有的地方做类似的事情。

http://www.threadless.com/catalog/type/guys/view/25/size/3x1

为此,您需要有一个控制器功能,例如:

class Catalog extends CI_Controller {
    function catalog()
    {
        $params = $this->uri->uri_to_assoc(3);
    }
}

这将输出如下内容:

Array
(
    [type] => 'guys'
    [view] => 25
    [size] => '3x1'
)

如果你想要逗号,你需要触摸.htaccess将所有","重写成"/"。

RewriteCond %{REQUEST_URI} ^([^',]*)',(.*)$
RewriteRule .* %1/%2 [R=301,L]

在你的.htaccess中mod_rewrite

http://statichtml.com/2010/mod-rewrite-baseon-on-query-string.html

如果你使用的是Apache,那么它将涉及.htaccess,.htdocs或httpd.conf(有多种方法)。关键是设置它,以便将名为"catalog"的文件解析为.php文件。然后,文件名(/type,guys/view,25/size,3xl)之后的所有内容都作为$_SERVER['PATH_INFO']传递给脚本,您可以自己解析。

不确定CodeIgniter如何准确工作,或者它是否具有以不同方式执行此操作的功能。

这不是 CodeIgniter 通常做事的方式,但在 http://codeigniter.com/user_guide/general/routing.html

您需要编辑/application/config/routing.php