두 언어 (히브리어 및 영어)로 된 WordPress 사이트가 있으며 브라우저 언어에 따라 리디렉션해야합니다. 두 언어 모두에서 콘텐츠를 만들려면 qTranslate 플러그인을 사용하고 있습니다. 이 플러그인도 리디렉션 기능을 가지고 있지만 리디렉션은 홈페이지에만 생성되므로 내부 페이지뿐만 아니라 홈페이지에서도 리디렉션이 필요합니다.URL 리디렉션이 제대로 작동하지 않습니다. http://domain.com/domain.com/
다른 개발자가 리디렉션을 생성하기 위해이 코드를 작성했지만 어떤 이유로 재밌는 리디렉션을 만듭니다. 히브리어로 언어를 전환 한 후 사이트를 떠나 직접 http://domain.com/en/
에 들어가려고하면 http://domain.com/domain.com/
(영어로 전환 할 때 발생하지 않음)으로 리디렉션됩니다.
히브리어의 리다이렉션을 만드는 "헤더 (위치 :)"를 가지고 놀았지만 작동 방법을 알아 내지 못했습니다. 상대 경로 대신 전체 경로를 사용하거나 "/"사이에 $_SERVER['SERVER_NAME']
과 $_SERVER['REQUEST_URI']
이지만 재귀 URL 또는 두 번"/ "(http://domain.com//
및 내부 페이지 http://domain.com//page
)의 URL이 있습니다.
는 URL 구조이다
- 영어
히브리어
희망이 있으니 이해해 주셔서 감사합니다.
header("Location: http://{$_SERVER['SERVER_NAME']}{$_SERVER['REQUEST_URI']}");
URL을, 특히 위치 헤더 사람들이하는을 포함해야 시도 대신
header('Location: '.$_SERVER['SERVER_NAME'].'/'.$_SERVER['REQUEST_URI']);
의
<?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;
}
?>
네, 감사합니다. 나는 그것을 시도했다. // 서브 라이브러리/en /이있는 곳의 URL이 // 생성됩니다. htaccess 파일에 다시 쓰기 규칙을 추가하여 "/"를 두 번 제거했지만 임시 해결책입니다. 여분의 해결 방법없이 제대로 작동하는 것이 좋습니다. – User24578
연결에 포함 된 '/'이 필요하지 않을 수 있습니다.'header ("Location : http : // {$ _SERVER [ 'SERVER_NAME']} {$ _SERVER [ 'REQUEST_URI']}");'. 이러한 종류의 일은 컬 또는 브라우저 디버그 도구를 사용하여 HTTP 응답을 직접 검사하면 쉽게 알 수 있습니다. –
완벽하게 작동합니다! 감사! – User24578