Rewriting search permalink

时间:2012-08-30 作者:mathiregister

在我的搜索字段(/?s=a)中键入“a”时,我的search.php 将加载模板,并显示与该字母匹配的所有结果。

如果我将此添加到我的。H访问…

RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^s=(.+)$
RewriteRule .* /searchmyblog/%1/? [R,L]
然后在我的搜索中键入“a”,将显示我搜索的第一个结果。所以没有search.php 显示所有结果的模板,但页面被重定向到“mypage.com/somecategory/amore-mio”

为什么会这样?我只是想重写/?s=/search/ 或任何其他自定义url。

有什么想法吗?我在网上找到了很多帖子,但没有一篇是最先进的,也没有使用一些我觉得不必要的奇怪的JS黑客。

有什么想法吗?

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

WordPress不知道您想要路径/searchmyblog/ 作为搜索结果库。所以当它看到a 它试图找到最好的匹配项——就你而言,是以这封信开头的帖子。

修复您可以修改的my code for the pagination base 要更改搜索库,请执行以下操作:

if ( ! function_exists( \'t5_search_base\' ) )
{
    register_activation_hook(   __FILE__ , \'t5_flush_rewrite_on_init\' );
    register_deactivation_hook( __FILE__ , \'t5_flush_rewrite_on_init\' );
    add_action( \'init\', \'t5_search_base\' );

    function t5_search_base()
    {
        $GLOBALS[\'wp_rewrite\']->search_base = \'searchmyblog\';
    }

    function t5_flush_rewrite_on_init()
    {
        add_action( \'init\', \'flush_rewrite_rules\', 11 );
    }
}
现在您的.htaccess 应该有用。

结束