【发布时间】:2015-09-03 15:23:51
【问题描述】:
我需要为我正在处理的 WordPress 多站点创建语言重定向功能。此重定向将取决于用户的浏览器设置。我想我可以在头文件中创建一个会话,以便在访问该站点时,该站点检查是否已经设置了会话,然后进行相应的重定向。放在 header.php 顶部的代码 -
$url = $_SERVER['REQUEST_URI'];
function redirect() {
$language = explode( ',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
switch( $language[0] ) {
case 'sv':
header( 'Location: /sv/' );
break;
case 'no':
header( 'Location: /no/' );
break;
case 'da':
header( 'Location: /da/' );
break;
}
}
if ( strlen($url) < 4 ) {
session_start();
if ( !isset($_SESSION[ 'language' ]) && empty($_SESSION[ 'language' ]) ) {
$_SESSION[ 'language' ] = true;
redirect();
}
}
如果我跳过标题位置并仅输出 switch case,我可以看到浏览器语言已获取,但没有重定向。我是在正确的轨道上还是应该采取完全不同的方法?
【问题讨论】:
-
尝试设置标题的绝对路径,例如。 example.com/sv。此外,不需要
!isset,因为您使用的是empty。 -
谢谢。我尝试设置一个绝对路径(也包括 www),它可以在 Chrome 中运行,但 Firefox 或 Safari 都不能...我知道浏览器语言输出不同,我已经在我的代码中更正了。
标签: php wordpress redirect browser