Aller au contenu

Problème de redirection


Sujets conseillés

Bonjour,

j'utilise un phpbb pour mon forum, et j'ai appliqué un mod pour l'url rewriting, pour avoir des url plus simples, grace à ce mod je me retrouve à présent avec des url du type:

http://www.justneuf.com/ftopic100.html

pour affiner le tout j'ai souhaité que mes url soient sous la forme

http://www.justneuf.com/ftopic_100.html

Là, ou ç'est moins évident c'est que GG m'a référencé mes pages en ftopic100.html et lorsque je clique dessus bien évidemment je tombe sur une 404, donc j'ai ajouté une ligne dans mon .htaccess:

ErrorDocument 404 http://www.justneuf.com

de manière à éviter les 404 et rediriger vers la page d'acceuil.

Mais ce que je souhaiterais, c'est rediriger mes ftopic100 vers ftopic_100 et là ..... souci :(

j'ai essayé d'ajouter :

RewriteRule ^ftopic([0-9]*)\.* /http://www.justneuf.com/ftopic_$1\.* /[R=301,L]

mais ça me donne une erreur 500 :nono:

Pour vous permettre de m' aider voilà mon htaccess complet avec juste la redir pour les 404

ErrorDocument 404 http://www.justneuf.com
DirectoryIndex portal.php
RewriteEngine On
RewriteRule ^forums.* /index.php
RewriteRule ^forum_([0-9]*).* /viewforum.php?f=$1&mark=topic
RewriteRule ^viewforum_([0-9]*)-([0-9]*)-([0-9]*).* /viewforum.php?f=$1&topicdays=$2&start=$3
RewriteRule ^forum_([0-9]*).* /viewforum.php?f=$1
RewriteRule ^ptopic_([0-9]*).* /viewtopic.php?t=$1&view=previous
RewriteRule ^ntopic_([0-9]*).* /viewtopic.php?t=$1&view=next
RewriteRule ^ftopic_([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).* /viewtopic.php?t=$1&postdays=$2&postorder=$3&start=$4
RewriteRule ^ftopic_([0-9]*)-([0-9]*).* /viewtopic.php?t=$1&start=$2
RewriteRule ^ftopic_([0-9]*).* /viewtopic.php?t=$1
RewriteRule ^ftopic_([0-9]*).html /viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5
RewriteRule ^sutra_([0-9]*).* /viewtopic.php?p=$1
RewriteRule ^newtopic_([0-9]*).* /viewtopic.php?t=$1&view=newest

Merci ;)

Modifié par cotdaz
Lien vers le commentaire
Partager sur d’autres sites

RewriteRule ^ftopic([0-9]*)\.* /http://www.justneuf.com/ftopic_$1\.* /[R=301,L]

Il vient d'où, le / devant http:// ?

Supprimes-le, ca ira mieux ;)

Pas besoin du \ devant le . dans le second membre non plus.

Et rajoute aussi un .html à la fin ;)

RewriteRule ^ftopic([0-9]*)\.html http://www.justneuf.com/ftopic_$1.html [R=301,L]

Dan

PS: pour info, si tu veux que ta redirection d'erreur retourne la bonne entête, il ne faut pas utiliser d'url complètement qualifiée mais mettre:

ErrorDocument 404 /

Lien vers le commentaire
Partager sur d’autres sites

merci Dan,

Voilà donc la ligne qui fonctionne pour Ovh en mut :

RewriteRule ^ftopic([0-9]*)\.html  http://www.justneuf.com/ftopic_$1.html [R=301,L]

Par contre je ne comprends pourquoi sur le début de mon htaccess il me faut un "/" et pas sur la partie pour passer de ftopic8 à ftopic_8 ?? Si tu pouvais m'expliquer, car avoir la solution c'est bien mais la comprendre est encore mieux pour la suite ;)

J'ai également suivi ton conseil pour le 404 ...

voici donc mon htaccess qui fonctionne:

ErrorDocument 404 /
DirectoryIndex portal.php
RewriteEngine On
RewriteRule ^forums.* /index.php
RewriteRule ^forum_([0-9]*).* /viewforum.php?f=$1&mark=topic
RewriteRule ^viewforum_([0-9]*)-([0-9]*)-([0-9]*).* /viewforum.php?f=$1&topicdays=$2&start=$3
RewriteRule ^forum_([0-9]*).* /viewforum.php?f=$1
RewriteRule ^ptopic_([0-9]*).* /viewtopic.php?t=$1&view=previous
RewriteRule ^ntopic_([0-9]*).* /viewtopic.php?t=$1&view=next
RewriteRule ^ftopic_([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).* /viewtopic.php?t=$1&postdays=$2&postorder=$3&start=$4
RewriteRule ^ftopic_([0-9]*)-([0-9]*).* /viewtopic.php?t=$1&start=$2
RewriteRule ^ftopic_([0-9]*).* /viewtopic.php?t=$1
RewriteRule ^ftopic_([0-9]*).html /viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5
RewriteRule ^sutra_([0-9]*).* /viewtopic.php?p=$1
RewriteRule ^newtopic_([0-9]*).* /viewtopic.php?t=$1&view=newest
RewriteRule ^ftopic([0-9]*)\.html  http://www.justneuf.com/ftopic_$1.html [R=301,L]
RewriteRule ^sutra([0-9]*)\.html  http://www.justneuf.com/sutra_$1.html [R=301,L]
RewriteRule ^ntopic([0-9]*)\.html  http://www.justneuf.com/ntopic_$1.html [R=301,L]
RewriteRule ^ptopic([0-9]*)\.html  http://www.justneuf.com/ptopic_$1.html [R=301,L]
RewriteRule ^forum([0-9]*)\.html  http://www.justneuf.com/forum_$1.html [R=301,L]

Constates tu, ou, constatez vous des erreurs, ou améliorations que je pourrais apporter :nono:

Merci encore.

Lien vers le commentaire
Partager sur d’autres sites

Cotdaz,

En fait tous les / devant viewforum.php sont syntactiquement incorrects.

C'est "tombé en marche" parce que ce fichier se trouve à la racine et que le DOCUMENT_ROOT est correctement renseigné (ce qui n'est pas le cas sur tous les hébergements).

Tu peux donc les supprimer partout et mettre tes règles comme:

RewriteRule ^forum_([0-9]*)\.html  viewforum.php?f=$1&mark=topic [L]

Tu noteras le [L] à la fin pour marquer qu'il n'y a plus de réécriture à faire une fois la règle validée. Ca évite de perdre du temps à essayer de trouver un "match" sur les autres lignes ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

Erreur Dan ?

Voilà les modifs que tu m' as conseillé de faire

ErrorDocument 404 /
DirectoryIndex portal.php
RewriteEngine On
RewriteRule ^forums.* /index.php
RewriteRule ^forum_([0-9]*).* viewforum.php?f=$1&mark=topic [L]
RewriteRule ^viewforum_([0-9]*)-([0-9]*)-([0-9]*).* viewforum.php?f=$1&topicdays=$2&start=$3 [L]
RewriteRule ^forum_([0-9]*).* viewforum.php?f=$1 [L]
RewriteRule ^ptopic_([0-9]*).* viewtopic.php?t=$1&view=previous [L]
RewriteRule ^ntopic_([0-9]*).* viewtopic.php?t=$1&view=next [L]
RewriteRule ^ftopic_([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).* viewtopic.php?t=$1&postdays=$2&postorder=$3&start=$4 [L]
RewriteRule ^ftopic_([0-9]*)-([0-9]*).* viewtopic.php?t=$1&start=$2 [L]
RewriteRule ^ftopic_([0-9]*).* viewtopic.php?t=$1 [L]
RewriteRule ^ftopic_([0-9]*).html viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5 [L]
RewriteRule ^sutra_([0-9]*).* viewtopic.php?p=$1 [L]
RewriteRule ^newtopic_([0-9]*).* viewtopic.php?t=$1&view=newest [L]
RewriteRule ^ftopic([0-9]*)\.html  http://www.justneuf.com/ftopic_$1.html [R=301,L]
RewriteRule ^sutra([0-9]*)\.html  http://www.justneuf.com/sutra_$1.html [R=301,L]
RewriteRule ^ntopic([0-9]*)\.html  http://www.justneuf.com/ntopic_$1.html [R=301,L]
RewriteRule ^ptopic([0-9]*)\.html  http://www.justneuf.com/ptopic_$1.html [R=301,L]
RewriteRule ^forum([0-9]*)\.html  http://www.justneuf.com/forum_$1.html [R=301,L]

Pour aller de l'acceuil à l'index du forum ok !

Mais par contre lorsqu'on clique sur un forum au hazard on est redirigé vers la page d'acceuil

à suivre ... ;)

Lien vers le commentaire
Partager sur d’autres sites

Comme mentionné dans mon post au début, tu as oublié un certain nombre de .html en première partie d'expression ;)

De ce fait tu as plusieurs règles qui ne seront pas validées...

Tu as aussi des règles où tu utilises les références arrières $2, $3, $4 et même $5 alors que tu n'as qu'une seule expression entre parenthèses dans le premier argument de la règle.... et ca ne marchera pas.

Exemple qui ne marche pas:

RewriteRule ^ftopic_([0-9]*).html /viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5

Je n'ai pas lu toutes tes règles, pensant qu'elles étaient supposées bonnes... mais à seconde lecture elles sont truffées d'erreurs de ce genre :blink:

Je n'ai pas de forum phpbb sous le coude pour valider les règles, ne connaissant pas les paramètres qui sont utilisés ...

Dan

Lien vers le commentaire
Partager sur d’autres sites

RewriteRule ^forum_([0-9]*)\.html  viewforum.php?f=$1&mark=topic [L]

Il manque le $ non ?

RewriteRule ^forum_([0-9]*)\.html$ viewforum.php?f=$1&mark=topic [L]

Lien vers le commentaire
Partager sur d’autres sites

En fait tous les / devant viewforum.php sont syntactiquement incorrects.

C'est "tombé en marche" parce que ce fichier se trouve à la racine et que le DOCUMENT_ROOT est correctement renseigné (ce qui n'est pas le cas sur tous les hébergements).

Tu peux donc les supprimer partout et mettre tes règles comme:

RewriteRule ^forum_([0-9]*)\.html  viewforum.php?f=$1&mark=topic [L]

Alors voilà la suite ..... :rolleyes:

j'ai essayé de virer les / mais ça ne fonctionnait pas, donc j'ai essayer de faire le test avec l'exemple que tu donnes ici

1. Créez un fichier html simple, nommez le « trouve.html ».

2. Modifiez le fichier .htaccess en y ajoutant les 3 lignes suivantes. Faites très attention à utiliser la syntaxe précise ou mieux, utilisez le copier/coller :

Options +FollowSymlinks

RewriteEngine on

RewriteRule ^nexistepas.html$ trouve.html  [L]

Ca ne fonctionnait pas mais comme ça :

RewriteRule   ^nexistepas.html$ /trouve.html  [L]

pas de souci ça fonctionne :up:

donc, suite à tes conseils et à ceux d' Nicolas, voilà le htaccess qui fonctionne:

ErrorDocument 404 /
DirectoryIndex portal.php
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^forums.* /index.php
RewriteRule  ^forum([0-9]*).html$ /viewforum.php?f=$1&mark=topic [L]
RewriteRule  ^viewforum([0-9]*)-([0-9]*)-([0-9]*).html$ /viewforum.php?f=$1&topicdays=$2&start=$3 [L]
RewriteRule  ^forum([0-9]*).html$ /viewforum.php?f=$1 [L]
RewriteRule  ^ptopic([0-9]*).html$ /viewtopic.php?t=$1&view=previous [L]
RewriteRule  ^ntopic([0-9]*).html$ /viewtopic.php?t=$1&view=next [L]
RewriteRule  ^ftopic([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).html$ /viewtopic.php?t=$1&postdays=$2&postorder=$3&start=$4 [L]
RewriteRule  ^ftopic([0-9]*)-([0-9]*).html$ /viewtopic.php?t=$1&start=$2 [L]
RewriteRule  ^ftopic([0-9]*).html$ /viewtopic.php?t=$1 [L]
RewriteRule  ^ftopic([0-9]*).html$ /viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5 [L]
RewriteRule  ^sutra([0-9]*).html$ /viewtopic.php?p=$1 [L]
RewriteRule  ^newtopic([0-9]*).html$ /viewtopic.php?t=$1&view=newest [L]

et finalement je reste avec des url sous la forme forum8.html ;)

D'autres idées afin d'améliorer tout ceci ?

Merci.

Lien vers le commentaire
Partager sur d’autres sites

RewriteRule  ^ftopic([0-9]*).html$ /viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5 [L]

Il y a un problème sur cette ligne

$2 $3 $4 et $5 n'auront pas de valeurs associées

Lien vers le commentaire
Partager sur d’autres sites

Après quelques jours d'absence, voilà le résultat, si j'opte pour une ligne comme vous me le conseillez

RewriteRule ^forum_([0-9]*)\.html  viewforum.php?f=$1&mark=topic [L]

voir une ligne comme ça

RewriteRule ^forum_([0-9]*)\.html$  /viewforum.php?f=$1&mark=topic [L]

ça ne fonctionne pas :blush: une chose est sure c'est que sur ovh il faut bien le" / " pour que ça tourne, puisque j'ai essayé de faire le test que tu conseilles avant de faire quoi que ce soit et avec le" / " pas de souci.

Donc j'ai constaté que ceci fonctionnait

RewriteRule ^forum_([0-9]*)\.* /viewforum.php?f=$1&mark=topic [L]

et aussi

RewriteRule  ^ftopic_([0-9]*)\.html$   http://www.justneuf.com/ftopic$1.html [R=301,L]

les 301 fonctionne très bien ;) même en indiquant le .html$

Pourquoi ?? sans doute un mystère des phpbb ....

mais en regardant mes logs je m'aperçois qu' à présent j'ai des 302 sur

/posting.php et /search.php voir login/php ??

Merci de vos conseils ce n'est jamais évident de démarrer et heureusement pour moi j'ai découvert le hub pour m'aider :hypocrite:

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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