1
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]+ /(#[^?& ]*)??([^& ]*&)?s=([^& ]+)[^ ]* HTTP/ 
RewriteRule ^$ http://wordpressblog.com/search/%3? [R=301,L] 

目前我使用上面的 .htaccess mod_rewrite 规则来转换默认的 WordPress 搜索永久链接:

http://wordpressblog.com/?s=key+word

进入像这样的漂亮永久链接:

http://wordpressblog.com/search/key+word

我的问题是:我需要更改上面 mod_rewrite 规则的哪一部分以获得更好的永久链接,例如:

http://wordpressblog.com/search/key-word.html

谢谢。

4

2 回答 2

1

这对我有用。当我启用永久链接时,搜索不起作用。

在 wp_head() 之后将此 JQUERY SCRIPT 添加到您的主题 header.php 文件中;标签。

为此,您还必须通过<?php wp_enqueue_script('jquery'); ?>在 wp_head() 之前添加 header.php 来启用 jquery;标签。

例子:

<?php wp_enqueue_script('jquery'); ?>
<?php
    /* We add some JavaScript to pages with the comment form
     * to support sites with threaded comments (when in use).
     */
    if ( is_singular() && get_option( 'thread_comments' ) )
        wp_enqueue_script( 'comment-reply' );

    /* Always have wp_head() just before the closing </head>
     * tag of your theme, or you will break many plugins, which
     * generally use this hook to add elements to <head> such
     * as styles, scripts, and meta tags.
     */
    wp_head();

?>
<script type="text/javascript"> 
    jQuery(document).ready(function() {
        jQuery("#searchform").live('submit',function(){

            location.href='/search/' + encodeURIComponent(jQuery("#s").val()).replace(/%20/g, '+'); return false;       

        }); 
    }); 
</script> 
于 2011-02-26T00:44:00.287 回答
0

如果我想对了,当你重定向这个时;

?s=hello+world

对此;

/search/hello-world.html

WordPress 实际上会搜索“hello-world.html”,我怀疑你会得到任何结果(假设“hello+world”,其中加号被 URL 解码为实际的“空格”,确实会返回结果)。

因此,您还需要在 WordPress 进行搜索之前插入它,以便将搜索词恢复到原来的状态。

另外,在 Apache 重写中进行字符替换似乎很痛苦——你必须为每个“加号”出现的次数编写一个规则。

如果我是你,我会在 WordPress 中使用 PHP 做所有事情。如果您喜欢这样的声音,我可以发布解决方案吗?

于 2010-05-27T16:48:44.753 回答