J'essaie de rediriger vers un chemin spécifique basé sur http_host ou serveur_name avec un script php.
J'ai essayé ces scripts: p>
1. P>
switch ($host) { case 'example.dk': header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.example.dk/index.php/da/forside/"); exit(); case 'www.example.dk': header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.example.dk/index.php/da/forside/"); exit(); default: header("Location: http://www.example.se"); exit(); } ?>
3 Réponses :
L'erreur de redirection la plus courante est une boucle de redirection. P>
En outre, le nom de Server_Name est généralement un nom global configuré Apache, http_host est vraiment la bonne façon de le faire. P>
http_host peut contenir le numéro de port, gardez cela à l'esprit. P>
Alors, quelle est l'URL de votre script et où vous redirigeez-vous? p>
Un moyen simple de déboguer est d'echo le contenu de http_host et au lieu d'appeler en-tête (), appelez également "Echo". p>
Parce que vous redirigez vers le même serveur (exemple.dk) et votre code s'exécute à nouveau et à nouveau dans une boucle.
Utilisez ce code à la place: P>
$domain = $_SERVER["SERVER_NAME"]; if (($domain == "example.dk" || $domain == "www.example.dk") && !$_GET['redirected']) { header("location: /index.php/da/forside?redirected=1"); }
La documentation PHP indique: b> http / 1.1 nécessite une URI absolue comme argument à »Emplacement: y compris le schéma, le nom d'hôte et le chemin absolu, mais certains clients acceptent les URIS relatives. Code> Mieux vaut avoir une URI absolue dans votre exemple.
Cela a fonctionné, mais quand je clique sur quoi que ce soit sur cette page, je ne peux pas surfer nulle part. Je suis juste coincé sur cette page. En outre, cela sera-t-il convivial pour les moteurs de recherche?
@nctrnl Quelles sont vos autres URL de pages?
@rahim asgari comme ceci: exemple.dk/index.php/da/axe , exemple.dk/index.php/da/sword , etc.
Ils sont dans l'exemple.dk domaine aussi. Donc, ils vont rediriger vers /index.php/da/forside aussi.
Est-il possible de faire comme "se termine par exemple.dk", de sorte qu'il ne rend pas cette truc de redirection lorsque j'essaie de visiter des liens sur le même domaine?
OK, c'est comme ça que je résolvai-je:
<?php $domain = $_SERVER["SERVER_NAME"]; $requri = $_SERVER['REQUEST_URI']; if (($domain == "www.example.dk" && $requri == "/index.php" || $domain == "example.dk") ) { Header( "HTTP/1.1 301 Moved Permanently" ); header("location: http://www.example.dk/index.php/da/forside"); } else if (($domain == "uk.example.dk" && $requri == "/index.php" || $domain == "www.uk.example.dk") ) { Header( "HTTP/1.1 301 Moved Permanently" ); header("location: http://uk.example.dk/index.php/en/uk/home"); } else if (($domain == "www.example.se" && $requri == "/index.php" || $domain == "example.se") ) { Header( "HTTP/1.1 301 Moved Permanently" ); header("location: http://example.se/index.php/sv/hem"); } ?>
Quelle est l'URL initiale que vous ouvrez?
Juste pour vos informations, dans votre premier exemple, l'emplacement doit être une URL entièrement qualifiée et non un chemin relatif.
@Nirmal même problème s'il s'agit d'une URL relative ou absolue