knostra Posté 25 Mars 2010 Posté 25 Mars 2010 Bonjour à tous, Je souhaiterais avoir vos conseils pour un redirection htaccess, j'ai supprimé 2 dossiers et tout remis dans un autre dossier nommé "content" et j'ai fais une redirection htaccess comme ceeci: RewriteEngine OnRewriteRule ^main(.+)\.html$ /index.php?p=$1.php [QSA,L,R=301]RewriteRule ^prods/(.*)/(.+)\.*$ /index.php?p=$1.php [QSA,L,R=301] La redirection fonctionne assez bien le seul problème est que mes url ne sont pas comme je le souhaite elles sont comme ceci: www.monsite.com/index.php?p=/conseils.php alors que je les voudrais comme ça: www.monsite.com/conseils.php d'après ce que j'ai lu c'est l'instruction R dans [QSA,L,R=301] qui fait que /index.php?p= s'affiche mais bon même quand je le supprime sa s'affiche encore, pourtant quand je suis sur mon site et que je clique sur un lien que j'ai créé j'ai bien l'url écrite correctement Je fais aussi de la réécriture pour mes lien normaux qui s'affiche correctement comme ceci tout mon fichier htaccess: RewriteEngine OnRewriteRule ^main(.+)\.html$ /index.php?p=$1.php [QSA,L,R=301]RewriteRule ^prods/(.*)/(.+)\.*$ /index.php?p=$1.php [QSA,L,R=301]RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php?p=$1 [QSA,L] et voici mon fichier index.php: <?phpif(!isset($_GET["p"])){ $_GET["p"]="index.php"; }if(!file_exists("content/".$_GET["p"])){ $_GET["p"]="404.php"; }ob_start();include "content/".$_GET["p"];eval($content);$content = ob_get_contents();ob_end_clean();include "template.php";?> voilà quand je clique sur mes lien la réécriture ce fait bien par contre quand je viens de google avec un lien référencé qui contient le nom d'un des répertoire que j'ai supprimé la réécriture ce fait mais elle affiche la variable $_GET et je trouve sa pas très bien autant au niveau visuelle que pour le référencement. google référence mon adresse comme ceci: www.monsite.com/main/conseils.php je fais un traitement via htaccess qui me donne une url comme ceci: www.monsite.com/index.php?p=/conseils.php alors que je les voudrais comme ça: www.monsite.com/conseils.php désolé si je me suis mal expliqué c'est un peu dur à faire comprendre. merci
Jeanluc Posté 25 Mars 2010 Posté 25 Mars 2010 Bonjour, Pour que www.monsite.com/main/conseils.html devienne www.monsite.com/conseils.php, je ferais ceci: RewriteRule ^main/(.+)\.html$ /$1.php [L,R=301] au lieu de RewriteRule ^main(.+)\.html$ /index.php?p=$1.php [QSA,L,R=301] Jean-Luc
knostra Posté 25 Mars 2010 Auteur Posté 25 Mars 2010 Super merci c'est exactement ce que je voulais faire. encore une petite question pour ma culture personnel qu'est-ce veut dire exactement tout ces choses: [QSA,L,R=301] et QSA particulièrement? merci je m'est tout de suite en résolu
Jeanluc Posté 25 Mars 2010 Posté 25 Mars 2010 Tu trouveras la réponse à ta "petite question pour ma culture personnelle" dans les publications de Webmaster-Hub: Mod_rewrite, ou la réécriture des URL "à la volée". Jean-Luc
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant