Корзина для конкретной страны - PullRequest
0 голосов
/ 01 апреля 2012

В настоящее время я создаю корзину покупок для клиента, но он хочет разные версии для разных стран, поэтому для этого я создал 2 субдомена, один из которых называется europe.website.com, а другой - row.website.com

On my .htaccess I also have this...
# Make all requests have www in them
RewriteEngine On
RewriteCond %{HTTP_HOST} ^website\.com
RewriteRule ^(.*)$ https://www.website.com/$1 [R=permanent,L] 

просто так он заставляет www. на сайте, но это не должно иметь никакого значения для субдомена, но, тем не менее, так как он имеет «https», я получаю угрозу безопасности, например,

Сертификат безопасности, представленный на этом сайте, был выдан для адрес другого сайта.

Проблемы с сертификатом безопасности могут указывать на попытку обмануть вас или перехватывать любые данные, которые вы отправляете на сервер.

Мы рекомендуем закрыть эту веб-страницу и не переходить к этому сайт.

так что это первая проблема, как вы можете видеть там! Вторая проблема заключается в том, что он не перенаправляет на эти субдомены, и я не могу понять, почему! Вот блок кода php, который я использовал на своем index.php на главном веб-сайте ....

<?php
$lc = ""; 
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
    $lc = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
}
if($lc == array("ab", "ad","ae","af","ag","al","am","ao","aq", "aa", "af", "sq", "am", "ar", "an", "ac", "as", "aw", "ax", "az", "bb", "bd", "bf", "bg", "bh", "bi", "bj", "bm", "bn", "bo", "br", "bs", "bt", "bv", "bw", "by", "bz", "ca", "cc", "cd", "cf", "cg","ci","ck","cl","cm","cn","co","cr","cu","cv","cx","dj","dm","do","dz","ec","ee","eg","eh","er","et","fj","fk","fm","fo","fx","ga","gd","ge","gf","gh","gl","gm","gn","gp","gq","gs","gt","gu","gw","gy","hk","hm","hn","ht","id","il","in","io","iq","ir","is","jm","jo","jp","ke","kg","kh","kl","km","kn","kp","kr","kw","ky","kz","la","lb","lc","lr","ls","ly","ma","md","me","mf","mg","mh","mk","ml","mm","mn","mo","mp","mq","mr","ms","mu","mv","mw","mx","my","mz","na","nc","ne","nf","ng","ni","np","nr","nt","nu","nz","om","pa","pe","pf","pg","ph","pk","pl","pm","pn","pr","ps","pw","py","qa","re","ru","rw","sa","sb","sc","sd","sg","sh","sj","sl","sn","so","sr","ss","st","su","sv","sy","sz","tc","td","tf","tg","th","tj","tk","tm","to","tp","tr","tt","tv","tw","tz","ug","um","us","uy","uz","va","vc","ve","vg","vi","vn","vu","wf","ws","ye","yt","yu","za","zm","zr","zw")){
    header("location: https://row.website.com/index.php");
    exit();
} else if($lc == array("an", "at", "ba", "be", "ch", "cs", "cy","cz", "de", "dk", "es", "eu", "fl", "fr", "fx", "gi", "gr", "hr", "hu", "ie", "it", "li", "lt", "lu", "lv", "mc", "mt", "nl", "no", "pt", "rs","ro", "se", "sl", "sk", "sm", "tn", "ua", "uk", "xk" )){
    header("location:  https://europe.website.com/index.php");
    exit();
}
?>

Поскольку я живу в Великобритании, я решил добавить «uk» в массив, который перенаправляет на мой поддомен европа, но не повезло, и попросил других друзей в штатах проверить сайт и посмотреть, перенаправляет ли он, но все еще нет радости, так как он просто остается на основном домене!

кто-нибудь получил какие-нибудь подсказки? заранее спасибо!

-Phillip Dews

UPDATE

Хорошо, все, я снова все изменил, и я попросил людей за границей проверить сайт, но он все еще не перенаправляет! вот мой код ....

<?php
$lst ['euro'] = array("be","bs",ECT ECT...);
$lst ['other'] = array("ab","aa","af");
$lc = ""; 
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
    $lc = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
}
else $lc = 'en';
if(in_array($lc, $lst['other'])){
    header("location: https://www.WEBSITE.com/row/index.php");
    exit();
}
elseif (in_array($lc, $lst['euro'])) {
    header("location: https://www.WEBSITE.com/europe/index.php");
    exit();
}
else {
    header("location: https://www.WEBDESITE.com/index.php");
    exit();
}
?>

решил избавиться от поддоменов, так как ssl не работает на них, и вместо этого просто добавьте в него 2 новых каталога!

Еще раз всем большое спасибо заранее! -Phillip Dews

1 Ответ

0 голосов
/ 01 апреля 2012
$lcode = explode(";", $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lcode = explode(",", $lcode['0']);
$lc = $lcode['0'];

Но, возможно, это даст тот же результат, что и вы ...

РЕДАКТИРОВАТЬ: Просто проверьте, какой код языка вы получаете? echo $lc;

Кроме того, вам необходимо указать язык по умолчанию (возможно, 'en'), если $ _SERVER ['HTTP_ACCEPT_LANGUAGE'] не установлен.

РЕДАКТИРОВАТЬ: Вам также необходимо перенаправить на домен по умолчанию, если код языка отсутствует ни в одном из двух ваших массивов. Например, что произойдет, если код «en»? Почему у вас нет 'en' в верхнем массиве?

ОБНОВЛЕНИЕ: ОК, у вас также есть ошибки в ваших логических выражениях php. Используйте in_array(), вот так:

<?php
  $lst_euro = array(array("an", "at", ...);
  $lst_other = array(array("ab", "ad", ...);
  $lc = ""; 
  if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
    $lc = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
  }
  else $lc = 'en';
  if(in_array($lc, $lst_other)){
      header("location: https://row.website.com/index.php");
      exit();
  } 
  elseif(in_array($lc, $lst_euro)) {
    header("location: https://europe.website.com/index.php");
    exit();
  }
  else {
    header("location: https://row.website.com/index.php");
    exit();
  }

?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...