求助 怎么做中文搜索
发布于:2022-01-17 09:50:54
#1 Korytan
http://localhost/index.php?c=search&a=search&kw=中文
正常显示
伪静态设置
'search/
' => 'search/search',
http://localhost/search/中文
中文显示不出来 英文正常
求.htaccess伪静态规则啊:dizzy::dizzy:
2016-06-02 02:44:04
#2 jake
正常的做法,一般是
http://localhost/search.html?s=关键字。具体看看百度或者其他的搜索引擎,都是通过GET提交参数,没哪个是用地址构造的。
楼上的非常规做法也行:
规则:
'search/' => 'search/index',
然后在控制器里面,通过$_SERVER["REQUEST_URI"]来取得整个请求地址,注意这里中文已经是URLENCODE过的。
.htaccess规则在手册内有。
PS:标题那样写不好吧,我编辑一下哦!
2016-06-02 08:58:32
#3 Korytan
我知道为什么了
'search/
' => 'search/search', //这里被转义了 中文转义后以%开头 不被地址接受
问题是怎么把urldecode回来?
2016-06-02 13:51:07
#4 jake
你的要求是URL地址本身,而不是参数。
但是URL本身的中文,比较难以统一。不同的浏览器有不同的编码,有些浏览器会是原来的中文,有些是encode过的%20什么的。
并且,不同浏览器还有不同的编码,如IE用的GBK码,会使得encode之后又不一样的。
所以,如果必须完成这样的功能,建议是看看能否统一浏览器起来,让浏览器的行为变得一致。
这是为什么大部分搜索参数都是通过参数传递(如百度)而不是通过URL地址本身传递的原因。并且百度是GBK的~~~
当然,我上面回帖的方法就不用那么麻烦,也实现了功能。
2016-06-02 14:51:04
#5 Korytan
那分页怎么做?
http://localhost/search/中文/1
我的旧版地址是这样的 新版就差这个地址弄不好:dizzy:
2016-06-04 01:22:54
#6 Korytan
那分页怎么做?
http://localhost/search/中文/1
我的旧版地址是这样的 新版就差这个地址弄不好:dizzy:
2016-06-04 01:23:09
#7 Korytan
* 'args' => array( // 网址映射附加的隐藏参数,如果针对某个网址映射设置了隐藏参数,则在网址中仅会存在参数值,而参数名称被隐藏。
* // 比如 'search' => array('q','page'), 那么生成的网址将会是:
* //
http://www.example.com/search-thekey-2.html * // 配合map映射'search' => 'main@search',这个网址将会执行 控制器main/动作serach,
* // 而参数q将等于thekey,参数page将等于2
* ),
个人觉得还是旧版这个好
比如新版 内容页 'show/
' => 'main/show',
如果id = 空值 就是在地址上删除id值 页面就显示不正常了 返回的是那种主页面连接不到CSS那种页面 好难看
还有加上 分页 也是必须显示的不能空值 有时候不满足分页条件 还真不想让它显示出来 相对于SEO优化也会好那么点点吧
个人建议吧 什么的做成如旧版隐藏参数 会好那么点吧
2016-06-04 03:46:30