Redirection PHP

Fermé
dagena Messages postés 230 Date d'inscription mardi 15 janvier 2008 Statut Membre Dernière intervention 17 avril 2015 - 8 sept. 2012 à 00:20
dagena Messages postés 230 Date d'inscription mardi 15 janvier 2008 Statut Membre Dernière intervention 17 avril 2015 - 11 sept. 2012 à 15:18
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


A voir également:

6 réponses

epitale Messages postés 3942 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 27 octobre 2017 915
8 sept. 2012 à 00:26
bonsoir dagena
regarde du coté du fichier .htaccess

--
0
DenisSP Messages postés 7 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 13 septembre 2012
Modifié par DenisSP le 8/09/2012 à 11:54
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
dagena Messages postés 230 Date d'inscription mardi 15 janvier 2008 Statut Membre Dernière intervention 17 avril 2015 22
8 sept. 2012 à 12:34
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
dagena Messages postés 230 Date d'inscription mardi 15 janvier 2008 Statut Membre Dernière intervention 17 avril 2015 22
8 sept. 2012 à 12:58
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
0x40 Messages postés 65 Date d'inscription vendredi 7 septembre 2012 Statut Membre Dernière intervention 14 septembre 2012 41
8 sept. 2012 à 14:18
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
dagena Messages postés 230 Date d'inscription mardi 15 janvier 2008 Statut Membre Dernière intervention 17 avril 2015 22
11 sept. 2012 à 15:18
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