我正在使用两个具有不同语言查询字符串设置的插件。语言插件本身适用于 mydomain.com/?lang=english (polylang插件),另一个插件需要检索 mydomain.com/?language=english 。
我应该如何重写网址,以便两者都正常工作?我尝试过以下方法:
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应该可以工作,虽然我需要将其重写为一个不错的网址。 如何使用打印的网址?这是在php中执行此操作的最佳方法,还是应该在htaccess中重写它?感谢。
答案 0 :(得分: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]以查看浏览器地址标签中的重定向