替代查询字符串格式

时间:2012-07-05 14:59:11

标签: php .htaccess codeigniter

我目前正在使用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有好处吗?还是涉及自定义函数?

谢谢!

4 个答案:

答案 0 :(得分:3)

你可以做一些类似的事情。

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]

答案 1 :(得分:1)

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

您需要修改/application/config/routing.php