我爱水煮鱼 » WordPress » WordPress 静态化搜索链接

WordPress 静态化搜索链接

把 WordPress 的搜索链接静态化也不是什么难事,只需要修改几个地方。不过在这里之前你要确保你的 Apache 支持 Mod_rewtite,并且你在你的 WordPress 已经启用 Permalink 的功能。

.htaccess 文件

在你的 .htaccess 文件中增加以下 mod_rewrite 规则:

RewriteRule ^search/(.+)?$ /index.php?s=$1 [QSA,L]

主题文件

添加一个 onsubmit 句柄到主题文件的搜索框的 form 标签:

<form action="<?php bloginfo('wpurl'); ?>/index.php" method="get" onsubmit="location.href='<?php bloginfo('home'); ?>/search/' + encodeURIComponent(this.s.value).replace(/%20/g, '+'); return false;">

就这么简单,以后你可以通过以下链接来搜索本站:

http://fairyfish.net/search/your+search+terms

翻译自:Friendly Search URLs,有删节!

更新:好像在 IE 可以直接输入:http://fairyfish.net/search/中文搜索词,FF上好像不行!暂时没有解决方法,不知道那位帅哥有办法?

标签:

分享到:

请选择你看完该文章的感受:

不错 超赞 无聊 扯谈 不解 路过
  1. 有个在客户端的解决办法
    打开FF的about:config页,把network.standard-url.encode-utf8的值设为true就可以了

  2. 服务器端解决起来应该比较麻烦
    根据这篇文章说的,在firefox中,直接在地址栏访问带中文的url,firefox会以GBK编码方式发送到服务器端,这样就需要在搜索程序前加一个filter,对搜索的字符串进行编码判断并转成utf-8,然后再进行搜索

  3. @ paopao,因为这个是在 .htacess 实现的,所以好像不能转换,不过我再想想,谢谢你提供的信息。

  4. FF传的值就是经过urlencode的了,你再urlencode了一次吧?
    本地试验了一下,把encodeURIComponent改成了decodeURIComponent就没问题了

  5. @雪山飞猪 我说的转码是修改WordPress的搜索程序,.htaccess确实不好改的,只是在它转发过来以后再处理

  6. 有吧,FF地址栏直接输入中文会自动以GBK编码,而搜索程序是以utf-8编码的,所以说到底还是个编码方式问题

  7. ie里面可以啊,确实很牛啊.请问是不是search_pro_5096.html?p=12 这样的没办法Rewrite成search_pro.do?catid=$1&p=$2?就是说Rewrite的前面必须以html为结尾.问题问得不专业,别笑话:)

  8. 就这段代码,那生成的翻页是search_pro_5096.html?p=12 而不是search_pro_5096_12.html,代码如下

    请问我怎样调整才能实现这样的效果search_pro_5096_12.html