DirectoryIndex vers une url réécrite... possible ?

tainjenchie

Nouveau WRInaute
Bonjour,
je suis fraichement formé aux techniques de réalisation d'un site web dynamique.
Je viens de découvrir naturellement l'url rewriting que je n'avais pas vu en formation. J'ai lu quelques tutos, fais quelques exos concluants mais, visiblement, il y a quelque chose que je ne comprends pas :
Je viens de créer un fichier .htaccess à la racine de mon site (plus exactement, dans le répertoire "new" dans lequel je développe la prochaine version de mon site)(contenu du fichier à la fin de ce message).
Ce fichier contient trois parties.
- la 1ère partie qui réécrit les url fonctionne très bien.
- la seconde qui tente de redéfinir l'index du répertoire en lui substituant une url réécrite ne fonctionne pas (laissant libre accès au contenu du répertoire aux l'internautes).
- quand à la troisième qui tentait de faire des redirections permanentes des anciennes pages du site (pas présentes physiquement dans le répertoire), j'ai dû la passer en commentaire car non seulement elle ne fonctionnait pas mais elle empêchait l'url rewriting de fonctionner !!!
Quelqu'un pourrait-il m'aider ?
Merci d'avance
CONTENU DE MON .HTACCESS :
_________________________________________________

#--------------------------------------------------
# Réécriture des url
#--------------------------------------------------

RewriteEngine on

RewriteRule ^site\-officiel\.html$ a.php?page=1 [L]

RewriteRule ^nom\-de\-la\-page\-2\.html$ b.php?page=2 [L]

RewriteRule ^nom\-de\-la\-page\-3\.html$ b.php?page=3 [L]

RewriteRule ^nom\-de\-la\-page\-4\.html$ b.php?page=4 [L]

RewriteRule ^nom\-de\-la\-page\-5\.html$ b.php?page=5 [L]

RewriteRule ^nom\-de\-la\-page\-6\.html$ b.php?page=6 [L]

RewriteRule ^nom\-de\-la\-page\-7\.html$ c.php?page=7 [L]

RewriteRule ^nom\-de\-la\-page\-8\.html$ d.php?page=8 [L]

RewriteRule ^nom\-de\-la\-page\-9\.html$ e.php?page=9 [L]

#--------------------------------------------------
# changement d'index
#--------------------------------------------------

DirectoryIndex site-officiel.html

#--------------------------------------------------
# Redirection 301 des anciennes pages
#--------------------------------------------------

#RedirectPermanent ancienne-page-1.php nom-de-la-page-7.html

#RedirectPermanent ancienne-page-2.php nom-de-la-page-3.html

#RedirectPermanent index.php site-officiel.html

#RedirectPermanent ancienne-page-3.php site-officiel.html

#RedirectPermanent ancienne-page-4.php site-officiel.html

#RedirectPermanent ancienne-page-5.php site-officiel.html

#RedirectPermanent ancienne-page-6.php site-officiel.html

#RedirectPermanent ancienne-page-7.php site-officiel.html

#RedirectPermanent ancienne-page-8.php site-officiel.html

#RedirectPermanent ancienne-page-9.php site-officiel.html

#RedirectPermanent ancienne-page-10.php site-officiel.html

#RedirectPermanent ancienne-page-11.php site-officiel.html

#RedirectPermanent ancienne-page-12.php site-officiel.html

#RedirectPermanent ancienne-page-13.php nom-de-la-page-5.html

#RedirectPermanent ancienne-page-14.php nom-de-la-page-2.html

#RedirectPermanent ancienne-page-15.php nom-de-la-page-8.html
__________________________________________________
 

forty

WRInaute passionné
avec cette solution tu as du duplicate content puisque deux pages sont censées afficher le même contenu. Il vaut mieux rediriger la racine vers site-officiel.html

Sinon il faut surement mettre :
Code:
DirectoryIndex a.php?page=1
 

tainjenchie

Nouveau WRInaute
Merci pour cette réponse Forty
Tu préconises que je remplace la ligne DirectoryIndex dans mon htaccess par celle que tu as écri et qui pointe non plus vers une url réécrite mais vers l'adresse dynamique ?
- Du coup, je perd les avantages de l'url rewrinting puisque l'internaute voit la variable passée en méthode GET.
- Faut il se débrouiller pour que l'index du site (qui puise ses contenus dans une base de donnée comme toutes les autres pages) s'affiche sans avoir de variables à passer ?
- et qu'en est-il du reste de mon code concernant les redirections permanentes des anciennes pages. Pourquoi ne fonctionne t'il pas ?
Merci beaucoup
 

forty

WRInaute passionné
tainjenchie a dit:
Tu préconises que je remplace la ligne DirectoryIndex dans mon htaccess par celle que tu as écri et qui pointe non plus vers une url réécrite mais vers l'adresse dynamique ?
- Du coup, je perd les avantages de l'url rewrinting puisque l'internaute voit la variable passée en méthode GET.
je n'ai pas préconisé cela (à cause du DC) mais de toute façon l'internaute ne va pas voir la variable car cette page est appelée que si tu appelles le "directory index".
Donc si tu mets le directoryindex il ne faut pas que la page site-officiel.html existe aussi.
tainjenchie a dit:
- Faut il se débrouiller pour que l'index du site (qui puise ses contenus dans une base de donnée comme toutes les autres pages) s'affiche sans avoir de variables à passer ?
c'est mieux
tainjenchie a dit:
- et qu'en est-il du reste de mon code concernant les redirections permanentes des anciennes pages. Pourquoi ne fonctionne t'il pas ?
Merci beaucoup
il faut dé-commenter en enlevant le "#" en début de ligne
 

tainjenchie

Nouveau WRInaute
Forty, je te remercie chaleureusement pour le temps que tu me consacre.
En retour, pour être honnête, je dois te dire que je ne comprends pas le sens de tes réponses.
Pourrais tu m'accorder un petit temps supplémentaire pour me dire ce que je dois faire pour que ce .htaccess fonctionne ?
Cordialement
 

forty

WRInaute passionné
première chose : à cause du duplicate content il ne faut pas que la même page soit accessible par deux adresses différentes. Avec le directoryindex tu vas avoir -http://tonsite.com/ et -http://tonsite.com/site-officiel.html qui seront identiques avec ce que tu veux faire.

Je préconise de ne pas avoir de page site-officiel.html mais seulement l'index. Il faut donc remplacer :
Code:
RewriteRule ^site\-officiel\.html$ a.php?page=1 [L]
DirectoryIndex site-officiel.html
par :
Code:
DirectoryIndex a.php?page=1

Pour gérer les redirections il faut employer une astuce pour éviter que la redirection crée une boucle infinie avec la réécriture. La technique c'est d'ajouter un paramètre "rewriting" à la réécriture et de vérifier à la redirection qu'il n'existe pas avant de la faire. Tu as le détail ici : http://www.urlrewriting.fr/faire-une-redirection-301-des-anciennes-url ... ess_9.html
 

Discussions similaires

Haut