Aller au contenu

Sujets conseillés

Posté

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 On
RewriteRule ^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 On
RewriteRule ^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} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]

et voici mon fichier index.php:


<?php
if(!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

Posté

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

Posté

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...