Zur Navigation

Länderweiterleitung

für ontecmedia

1 ShadowLupina

Ich versuche eine Länderweiterleitung für die Seiten ontecmedia.de und ontecmedia.com einzurichten

Dabei soll nur dann auf de geleitet werden, wenn die Browsersprache deutsch ist und in jedem anderen Fall auf die com Adresse

Mein Code sieht so aus:

RewriteCond %{HTTP:Accept-Language} !de [NC]
RewriteRule ^(.*)$ http://www.ontecmedia.com/$1 [R=301,L]

RewriteCond %{HTTP:Accept-Language} de [NC]
RewriteRule ^(.*)$ http://www.ontecmedia.de/$1 [R=301,L]

Das scheint auch einigermaßen zu futzen nur kommt der Fehler, dass die Weiterleitung niemals beendet werden kann

Was stimmt da noch nicht?

09.11.2013 11:44

2 Jörg Kruse

Nur weiterleiten, wenn die Domain nicht bereits die Zieldomain ist:

RewriteCond %{HTTP:Accept-Language} !de [NC]
RewriteCond %{HTTP_HOST} !^www\.ontecmedia\.com$
RewriteRule ^(.*)$ http://www.ontecmedia.com/$1 [R=301,L]

09.11.2013 11:49

3 ShadowLupina

Danke die Weiterleitung funktioniert schon mal

Jetzt ist aber das Problem...dass wenn ich die Weiterleitung über nen Proxy teste jedes mal das slash nach com weglassen wird und seiten wie

www.ontecmedia.comagency.html

versucht werden aufzurufen

wie kann ich das / wieder anfügen und wieso verschwindet es

09.11.2013 12:11

4 ShadowLupina

und das passiert egal bei welchen proxy

09.11.2013 12:11

5 ShadowLupina

hm...aus irgendeinen Grund funktioniert di Weiterleitung auf einmal nicht mehr...hab nix geändert o0

09.11.2013 20:00

6 Jörg Kruse

Wozu testest du mit einem Proxy?

Den Accept-Language Header kannst du dadurch ändern, dass du im Browser eine andere Sprache einstellst (z.B. Firefox Einstellungen -> Inhalt -> Sprachen)

Die IP-Adresse wird bei dieser Weiterleitung nicht berücksichtigt

Jetzt ist aber das Problem...dass wenn ich die Weiterleitung über nen Proxy teste jedes mal das slash nach com weglassen wird und seiten wie

www.ontecmedia.comagency.html

versucht werden aufzurufen
und das passiert egal bei welchen proxy

Und das passiert nur mit Proxies?

Hast du da noch die PHP-Weiterleitung aus dem anderen Thread drin?

09.11.2013 21:14

7 ShadowLupina

Zitat von Jörg
Wozu testest du mit einem Proxy?

Den Accept-Language Header kannst du dadurch ändern, dass du im Browser eine andere Sprache einstellst (z.B. Firefox Einstellungen -> Inhalt -> Sprachen)

Die IP-Adresse wird bei dieser Weiterleitung nicht berücksichtigt

Jetzt ist aber das Problem...dass wenn ich die Weiterleitung über nen Proxy teste jedes mal das slash nach com weglassen wird und seiten wie

www.ontecmedia.comagency.html

versucht werden aufzurufen
und das passiert egal bei welchen proxy


Und das passiert nur mit Proxies?

Hast du da noch die PHP-Weiterleitung aus dem anderen Thread drin?


Weil ich dachte, dass die IP Adresse berücksichtigt wird...so weit ich weiß verschwindet das Slash auch, wenn man keine Proxys verwendet aber das muss ich noch testen...sobald die Weiterleitung wieder drin ist

Ja...es gibt noch eine ähnliche php Weiterleitung wie aus dem anderen thread

<?php
$url = "http://www.ontecmedia";

if($modx->context->key == 'mgr')
    return;

$regions = array('de', 'com');

// Location
#$location = trim($_REQUEST['contentlang'], '/');

$tld = strrchr ( $_SERVER['SERVER_NAME'], "." );
$tld = substr ( $tld, 1 );

$location = $tld;

if(preg_match('/^start\.html$/', $_REQUEST['q']))
   return;

//if(!$location && in_array($_REQUEST['q'], $regions)) {
//   header("Location: $url");
//   exit;
//}

// Default context
$context = 'web';

//if(!in_array($location, $regions)) {
//   header("Location: $url.com");
//   exit;
//}

$new_location = "";

if($_REQUEST['q'] == "" && $_REQUEST['ncr'] != '1') {
if($location == "com") {
include($modx->getOption('core_path').'components/ipinfo/geoip.php');

switch($cn['CountryName']) {
      case 'Germany':
        $new_location = 'de';
        break;
      case 'United States':
        $new_location = 'us';
        break;
      case 'Spain':
        $new_location = 'es';
        break;
      default:
        $new_location = 'com';
   }
}

if($location == "com" && $new_location != "com" && $new_location) {
     header("Location: $url.".$new_location);
     exit;
}
}

if(in_array($location, $regions)){
#   if($location == "com")
#     $location = "us";

   $context = $location . "web";
}

$modx->switchContext($context);

Aber die hat aus irgendeinen Grund auch nicht funktoniert...weswegen ich das mit der htaccess realisieren wollte...ist die dafür verantwortlich..weil kurzzeitig hatte die änderung über die htaccess datei ja funktioniert

09.11.2013 22:40

8 Jörg Kruse

Dann würde ich die PHP-Weiterleitung einfach mal deaktvieren, und schauen, ob das Problem dann noch besteht.

Mal abgesehen davon, dass so eine doppelte Weiterleitung bei einigen Leuten auch zu einer Endlosweiterleitung führen kann. Du solltet dich schon entscheiden, ob du anhand des Accept-Language-Headers oder anhand der IP-Adresse weiterleitest.

10.11.2013 19:58

9 ShadowLupina

Wenn ich die PHP weiterleitung deaktiviere...dann kommt

Page not found

The page you requested was not found.

11.11.2013 09:46

10 Jörg Kruse

Die URL in der Adresszeile des Browsers gibt Aufschluss darüber, was nicht gefunden wird, und gibt möglicherweise einen Hinweis darauf was schiefgelaufen ist.

11.11.2013 16:33 | geändert: 11.11.2013 16:35