【问题标题】:Rewrite and combine query strings for wordpress为 wordpress 重写和组合查询字符串
【发布时间】:2015-08-01 16:45:06
【问题描述】:

我正在使用两个具有不同语言查询字符串设置的插件。语言插件本身适用于 mydomain.com/?lang=english(polylang 插件),其他插件需要检索 mydomain.com/?lang=english。 p>

我应该如何重写 url 以使两者都能正常工作?我尝试了以下方法:

   function languagerewrite() {
     //$language = get_query_var('lang', 1); 
     //get_query_var not working, yet 'lang' is registered Why? 
       if(isset($_GET["lang"])) {
       $language = $_GET["lang"];

      echo esc_url(add_query_arg( 'language', $language ));
      }
    }
    add_action('init', 'languagerewrite', 10, 0);

这将回显以下内容: ?lang=english&language=english 应该可以工作,尽管我需要将其重写为一个不错的 url。 如何使用打印的 url?这是在 php 中执行此操作的最佳方法还是应该在 htaccess 中重写它?谢谢。

【问题讨论】:

    标签: php wordpress plugins url-rewriting


    【解决方案1】:

    使用这样的htaccess

    RewriteEngine on
    # two lines to avoid endless redirect. Although you may leave only 1st
    RewriteCond %{QUERY_STRING} !lang(.+)language
    RewriteCond %{QUERY_STRING} !langage(.+)lang
    # Looking for lang or language and saving other get values
    RewriteCond %{QUERY_STRING} ^(.+&|)lang(|uage)=([^&]+)(&.+|)$ 
    RewriteRule ^(.+)$ /$1?%1lang=%3&language=%3%4 [L]
    

    要尝试,请添加 R - [R,L] 以在浏览器地址选项卡中查看重定向

    【讨论】:

    • 谢谢。这是完美的工作。是否有可能使这也适用于启用漂亮的网址?当我启用不错的永久链接时,polylang 将像 domain.com/language/english/ 一样重写,但 /?language 查询不再起作用。
    • 请清除您认为的输入内容并希望实现?你还需要语言查询吗?
    • 简而言之,我想要一个像 domain.com/language/english/ 这样的 url。我在重写规则上尝试了几件事,但还没有得到正确的结果。
    • 带查询 - domain.com/language/english/?lang=english ?并像以前一样输入 url - ?lang= 或 langage= ?
    • 没有任何疑问。但是该语言必须对这两个插件都有效。 (所以查询 ?lang= 或 ?language= 重写为一个不错的 url。
    猜你喜欢
    • 2012-10-26
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 2015-01-25
    • 1970-01-01
    • 2011-02-01
    相关资源
    最近更新 更多