我有兩種語言(希伯來語和英語)的WordPress網站,我需要它根據瀏覽器語言重定向。我使用qTranslate插件以兩種語言創建內容。這個插件也具有重定向功能,但它僅爲首頁創建重定向,我需要重定向發生在內部頁面以及主頁上。網址重定向無法正常工作:遺傳網址http://domain.com/domain.com/
另一位開發人員爲我寫了這段代碼來創建重定向,但由於某種原因它創建了一個有趣的重定向。它只有在將語言切換到希伯來語時纔會發生,然後離開該網站並嘗試直接進入http://domain.com/en/
,並將您重定向到http://domain.com/domain.com/
(切換到英語時不會發生)。
我嘗試使用創建希伯來文重定向的「header(Location:)」,但無法弄清楚如何使其工作 - 我嘗試使用完整路徑而不是相對路徑,或刪除「 /「在$_SERVER['SERVER_NAME']
和$_SERVER['REQUEST_URI']
之間,但得到帶有雙」/「(http://domain.com//
以及內部頁面http://domain.com//page
)的遞歸url或url。
的URL結構是:
- domain.com/希伯來語
- domain.com/en/英語
和切換語言時,那麼參數$ LANG = EN或$ lang =他正在被添加。
希望這是有道理的,並且非常感謝!
這是代碼,負責重定向:
<?php
if (!isset($_COOKIE["uln"])) :
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
setcookie('uln', $lang, time()+86400*365, '/', '.domain.com'); // cookie stored for a year
$_COOKIE['uln'] = $lang;
endif;
//if lang=(value) is not empty
if(isset($_GET['lang'])) {
$lang = $_GET['lang'];
setcookie('uln', $lang, time()-1, '/', '.domain.com'); //this unsets the cookie for random language selection
//set the cookie "uln" again with the selected language.
setcookie('uln', $lang, time()+86400*365, '/', '.domain.com'); // cookie stored for a year
$_COOKIE['uln'] = $lang;
}
if(($_COOKIE["uln"]) == "en") {
$matched = strncmp("/en/", $_SERVER['REDIRECT_URL'], 3);
if ($matched !== 0) :
header('Location: /en'.$_SERVER['REQUEST_URI']);
endif;
} elseif(($_COOKIE["uln"]) == "he") {
$matched = strncmp("/en/", $_SERVER['REDIRECT_URL'], 3);
if ($matched === 0) :
header('Location: '.$_SERVER['SERVER_NAME'].'/'.$_SERVER['REQUEST_URI']);
endif;
}
?>
呀,謝謝。我嘗試過這個。它會導致一個URL,其中//子庫/ en /是。我在htaccess文件中添加了一個重寫規則來刪除雙「/」,但這是一個臨時解決方案。我寧願它正常工作,沒有額外的解決方法。 – User24578
您可能不需要在concat中包含'/'。'header(「Location:http:// {$ _SERVER ['SERVER_NAME']} {$ _SERVER ['REQUEST_URI']}」);'。如果直接使用curl或瀏覽器調試工具檢查HTTP響應,很容易看出這種情況。 –
太好了。完美的作品!謝謝! – User24578