【问题标题】:Replace plus (+) with dash (-) in Wordpress search在 Wordpress 搜索中将加号 (+) 替换为破折号 (-)
【发布时间】:2014-09-11 21:32:23
【问题描述】:

如何使用 htaccess 在 url 中将 url 加号 (+) 符号更改为破折号 (-)。这是我到目前为止的代码:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /(#[^?&\ ]*)?\?([^&\ ]*&)?s=([^&\ ]+)[^\ ]*\ HTTP/
RewriteRule ^$ http://example.com/search/%3\.html? [R=301,L]
</IfModule>

效果很好,结果如下:http://example.com/search/key+word.html

唯一的事情是我想用破折号改变加号。如果有人能提供帮助,我将不胜感激。

【问题讨论】:

  • 我没有尝试,也没有告诉你该怎么做,但这不会带走搜索字符串的要点吗?它显示了一个加号,表明它正在搜索这个词 AND 这个词 AND 这个词?
  • 这个字符串的目的是为了搜索引擎优化,它仍然显示这个词和这个词和这个词的结果,因为我也更新了 query.php 文件。还是谢谢

标签: wordpress .htaccess permalinks


【解决方案1】:

您可以在您的 301 规则下方插入此代码:

RewriteRule "^(search)/([^ +]*)[ +]+([^ +]*[ +].*)$" /$1/$2-$3 [L,NE]
RewriteRule "^(search)/([^ +]*)[ +]([^ +]*)$" /$1/$2-$3 [L,R=302,NE]

【讨论】:

  • 谢谢,但我收到 500 内部服务器错误。
  • 500 消失了,但即使我把它放在 301 规则之上,它仍然显示加号 (+)。
  • 它在我的测试中运行良好。确保此规则刚好低于您的 301 规则。如果其他规则没有将+s 放回去,请检查 Firebug。
【解决方案2】:

我决定通过使用带有此代码的插件来实现它:

function seo_search_result() {
    if ( is_search() && strpos($_SERVER['REQUEST_URI'], '/wp-admin/') === false && strpos($_SERVER['REQUEST_URI'], '/search/') === false ) {
        wp_redirect(get_bloginfo('home') . '/search/' . str_replace(' ', '-', str_replace('%20', '-', get_query_var('s'). '.html')));
        exit();
    }
}

add_action('template_redirect', 'seo_search_result');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    相关资源
    最近更新 更多