Redirection PHP

Fermé
Signaler
Messages postés
230
Date d'inscription
mardi 15 janvier 2008
Statut
Membre
Dernière intervention
17 avril 2015
-
Messages postés
230
Date d'inscription
mardi 15 janvier 2008
Statut
Membre
Dernière intervention
17 avril 2015
-
Bonjour à tous,
je vous expose mon problème, j'ai un code dans mon index.php qui me sert à rediriger l'url http://XXXX.fr vers http://www.XXXX.fr
le code est le suivant:

if(isset($_SERVER['HTTP_HOST']))
{
if(strstr($_SERVER['HTTP_HOST'], 'www') == false)
{
header('Status: 301 Moved Permanently');
header('Location: http://www.' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
exit;
}
}

Mais j'ai besoin d'un peu plus, car j'aurai besoin que ces 2 url avec et sans préfixe soit redirigé vers:
http://www.XXXX.fr/login.php

donc comment modifier ce code pour que ce soit réalisable.

Merci à tous pour votre aide.

Cordialement


6 réponses

Messages postés
3926
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
27 octobre 2017
921
bonsoir dagena
regarde du coté du fichier .htaccess

--
0
Messages postés
7
Date d'inscription
mercredi 5 septembre 2012
Statut
Membre
Dernière intervention
13 septembre 2012

Si il faut toujours que ca dirige vers www.example.org/login.php alors:

fichier index.php:
header('Status: 301 Moved Permanently'); 
header('Location: [http://www. example.org/login.php'; 
exit; 


Non ?
0
Messages postés
230
Date d'inscription
mardi 15 janvier 2008
Statut
Membre
Dernière intervention
17 avril 2015
22
déjà merci pour vos réponses
alors voilà si je mets ce code dans mon index.php:

if(isset($_SERVER['HTTP_HOST']))
{
if(strstr($_SERVER['HTTP_HOST'], 'www') == false)
{
header('Status: 301 Moved Permanently');
header("Location: http://www.exemple.fr/login.php");

exit;
}

En tapant exemple.fr je suis bien redirigé sur www.exemple.fr/login.php par contre si je mets le préfixe www.exemple.fr ben la je ne suis pas redirigé.

Merci pour votre aide
0
Messages postés
230
Date d'inscription
mardi 15 janvier 2008
Statut
Membre
Dernière intervention
17 avril 2015
22
je vous mets mon code php d'origine complet:
<?php
/***************************************************************************
* Copyright (C) 2009-2011 by Geo Varghese(www.seopanel.in) *
* sendtogeo@gmail.com *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/

include_once("includes/sp-load.php");
include_once(SP_CTRLPATH."/index.ctrl.php");
include_once(SP_CTRLPATH."/directory.ctrl.php");
$controller = New IndexController();
$controller->view->menu = 'home';

if($_SERVER['REQUEST_METHOD'] == 'GET'){

switch($_GET['sec']){

case "news":
$controller->showNews($_GET);
break;

default:
$controller->index($_GET);
break;
}
}elseif($_SERVER['REQUEST_METHOD'] == 'POST'){

switch($_POST['sec']){

default:
$controller->index($_POST);
break;
}
}

?>

htaccess j'ai essayé mais la redirection ce fait mais la page saute, donc je ne sais pas comment faire.
0
Messages postés
65
Date d'inscription
vendredi 7 septembre 2012
Statut
Membre
Dernière intervention
14 septembre 2012
43
Si tu test en local c'est normale le sous domaine www n'existe pas.. >< Sinon ton code fonctionne parfaitement !!!

Il est inutile de vérifier si strstr == false tu peux directement faire comme ceci :
<?php
if(isset($_SERVER['HTTP_HOST'])) { 
	if( !strstr($_SERVER['HTTP_HOST'], 'www')) { 
		header('Status: 301 Moved Permanently'); 
		header("Location: http://www.exemple.fr/login.php"); 
	}
}


En ce qui me concerne voici mon code de test :
<?php
if(isset($_SERVER['HTTP_HOST'])) { 
	if( strstr($_SERVER['HTTP_HOST'], 'www')) { 
		header('Status: 301 Moved Permanently'); 
		header("Location: http://www.exemple.fr/login.php"); 
	} else { echo $_SERVER['HTTP_HOST'];}
}

J'ai simplement inversé la condition. Tu peux tester ici http://intcoders.fr/index.php et http://www.intcoders.fr/index.php :)
0
Messages postés
230
Date d'inscription
mardi 15 janvier 2008
Statut
Membre
Dernière intervention
17 avril 2015
22
donc voilà après avoir essayé de multiples config, si je redirige vers url avec préfixe j'ai l'impression que ma redirection tourne en boucle et la page saute, je pense que cela viens de mes paramètres dns dans plesk (et non je ne suis pas en local) donc j'ai opté pour une redirection sans le préfixe en htaccess qui fonctionne parfaitement, de toute façon il n'est pas destiné à être référencé (tous les robots interdit par le fichier robot.txt)
voici le code que j'ai utilisé:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.exemple.fr$
RewriteRule ^(.*) http://exemple.fr/$1 [QSA,L,R=301]
RedirectPermanent /index.php http://www.exemple.fr/login.php

je vous accorde que ce code n'est pas trés logique mais il fonctionne, il me redirige vers exemple.fr/login.php avec ou sans préfixe
il serait plus logique de mettre:
RedirectPermanent /index.php http://exemple.fr/login.php mais si je ne mets pas le préfixe la page saute comme une boucle de redirection infini, ce qui me laisse dire que c'est un problème niveau DNS.

En tout cas merci pour votre aide.
0