我目前正在使用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有好处吗?还是涉及自定义函数?
谢谢!
答案 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)
你的.htaccess中的mod_rewrite
http://statichtml.com/2010/mod-rewrite-baseon-on-query-string.html
答案 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