Redirectpermanent et le ? de fin d'URL (entre URL Rewrité)

Nouveau WRInaute
Salut,

Voila un petit bout de temps que je cherche une solution à mon problème.

Pour faire court : J'ai un redirectpermanent sur des URL rewrité vers une autre forme d'URL rewrité, j'y suis presque mais il me reste un point d'interrogation en fin de nouvelle URL !

Détails :

ancienne URL : http://monsite.com/truc-machin (remarque importante : pas d'extension .html mais c'est un fichier quand meme ; l'URL véritable est du genre http://monsite.com/spip.php?page=machin&id_article=4)

nouvelle URL : http://monsite.com/truc-machin-bidule.html

J'ai donc dans mon fichier htaccess (pour le moment) :

Code:
RedirectPermanent /truc-machin http://monsite.com/truc-machin-bidule.html?

Je laisse le point d'interrogation à la fin pour justement éviter l'affichage des variables de l'URL d'origine (page=machin&id_article=4)

Mais je souhaiterai que le ? (point d'interrogation) ne s'affiche pas ! (point d'exclamation 8) )

J'ai bien trouver des pistes sur quelques forums, mais au final la solution et toujours : "on laisse le ? c'est toujours mieux que "page=machin&id_article=4" "

Si quelqu'un à une idée ... Merci d'avance.
 
WRInaute passionné
il faut utilise un RewriteRule a la place :
Code:
RewriteEngine On
RewriteRule ^truc-machin$ http://monsite.com/truc-machin-bidule.html? [L]
 
Nouveau WRInaute
Merci,

Effectivement cela fonctionne, pour info je suis assez curieux, explique moi vite fait la commande et le [L].

Autre chose auquel je n'avais pas pensé :

Mon URL rewrité /truc-machin est quelque fois du genre :
-truc-machin-
-truc-machin-?genre=1

Toujours a rewrité vers du truc-machin-bidule.html !

Et j'ai fais l'essai avec la rewrite rule cela ne fonctionne pas dans ces cas.

Que faire ?
 
Nouveau WRInaute
PS : on est bien en redirection 301 ?

Et j'ai fais une erreur dans mon dernier post :

l'URL http://monsite.com/-truc-machin-?genre=1 doit être rediriger vers http://monsite.com/rubrique.php?id_rubrique=1&caracteristique=1&caracdisp=1

et

l'URL http://monsite.com/-truc-machin-?genre=2 doit être rediriger vers http://monsite.com/rubrique.php?id_rubrique=1&caracteristique=1&caracdisp=2

J'imagine qu'il y a bien un rewrite rule a faire aussi mais laquelle ?
 
WRInaute passionné
j'ai oublié un flag R=301 pour rediriger. L indique que les RewriteRule suivantes dans le fichier ne sont pas évaluée si celle-ci match.
L'idée pour rediriger une url avec paramètres c'est d'écrire avec une condition :
Code:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^genre=1$
RewriteRule ^-truc-machin-$ http://monsite.com/rubrique.php?id_rubrique=1&caracteristique=1&caracdisp=1 [L,R=301]
 
Nouveau WRInaute
Merci une fois de plus forty.

Puisque tu m'as l'air plutot bien caler sur le htaccess j'ai deux dernières petites questions :

La première :

http://monsite.com va etre déplacer vers http//monsite.com/dossier.
Que dois-je mettre dans mon htaccess pour que monsite.com et www.monsite.com pointe vers ce dossier mais et non plus à la racine de mon dossier html

La deuxième :

Je vais me retrouver avec deux sites (donc deux htaccess) !
Ou dois-je mettre les rewriterule que tu m'as donner précédemment et la règle que je te demande plus haut.

Et pour finir (bonus):

Si je veux pouvoir quand même accéder à mon ancien site (avec n'importe quelle adresse) que dois-je faire ?

J'ai déjà un peu fouiner sur le net et les forums mais je ne suis pas sur de moi.

Merci d'avance.
 
WRInaute passionné
pour rediriger vers un répertoire il faut mettre :
Code:
RewriteCond $1 !^dossier
RewriteRule ^(.*)$ /dossier/$1 [R=301,L]
la condition permet d'éviter de rediriger les urls du dossier et de boucler.

en général les règles de réécriture sont a la racine mais il est toujours possible de mettre des règles dans un répertoire.

J'ai du mal a comprendre ce que tu veux faire et le lien entre le transfert vers un répertoire et l'ancien site.
 
Nouveau WRInaute
En fait c'est simple, j'ai actuellement un site tout ce qu'il y a de plus normal (.com , hebergement et URL rewwriter) le tout bien référencé.

Le probleme est que ce site ne me convient pas du tout alors je l'ai refait entièrement (en local) avec le même contenu mais avec un mode d'urlrewritting totalement différent et que je veux le mettre à la place de l'ancien (sans écraser l'ancien pour pouvoir y retourner si besoin).

Donc pour google et pour les utilisateurs, j'aimerai faire le transfert le plus rapidement possible et le plus transparent possible (sans perdre ni référencement ni visiteurs)

J'ai alors choisi de le mettre dans un sous dossier de mon site actuel et de tout gerer par htaccess, ce qui m'a semblé le plus simple et le plus judicieux.

Je sais pas si j'ai été assez explicite, pour moi le problème me parait simple mais la solution me parait elle compliqué (un peu plus clair depuis tes lumières)

Ce qui me fait cogiter maintenant c'est comment conserver l'ancien site de coté pour y retourné (au cas ou). Car ce qui me complique la compréhension c'est que le deux site on leur propre fichier htaccess avec leur propre systeme d'URL rewritting !

Si t'as la soluce sans que je ne me tape un fichier htaccess de 1Mo, je suis preneur !

Merci de me suivre dans ma réflexion, si j'y arrive jte file un code promo (car le site c'est du ecommerce) car je dois faire la bascule dans la nuit de demain.
 
WRInaute passionné
si c'était moi, je transférerais l'ancien site sur un sous domaine ou un sous répertoire et je mettrais le nouveau à la place de l'ancien.
 
Nouveau WRInaute
ok, je pense que c'est ce que je vais faire.

Par contre j'essaye ça :

RewriteCond %{QUERY_STRING} ^genre=1$
RewriteRule ^-truc-machin-$ http://monsite.com/rubrique.php?id_rubrique=1&caracteristique=1&caracdisp=1 [L,R=301]
RewriteRule ^-truc-machin-bidule-$ http://monsite.com/rubrique.php?id_rubrique=1&caracteristique=1&caracdisp=1 [L,R=301]
RewriteRule ^-truc-machin-bidule-chose-$ http://monsite.com/rubrique.php?id_rubrique=1&caracteristique=1&caracdisp=1 [L,R=301]

RewriteCond %{QUERY_STRING} ^genre=2$
RewriteRule ^-truc-machin-$ http://monsite.com/rubrique.php?id_rubrique=1&caracteristique=1&caracdisp=2 [L,R=301]
RewriteRule ^-truc-machin-bidule-$ http://monsite.com/rubrique.php?id_rubrique=1&caracteristique=1&caracdisp=2 [L,R=301]
RewriteRule ^-truc-machin-bidule-chose-$ http://monsite.com/rubrique.php?id_rubrique=1&caracteristique=1&caracdisp=2 [L,R=301]

Mais cela ne fonctionne pas !

En plus je rajoute au dessus

RewriteRule ^-truc-machin-$ http://monsite.com/truc-machin-_11.html [L,R=301]
RewriteRule ^-truc-machin-bidule-$ http://monsite.com/truc-machin-bidule_11.html [L,R=301]
RewriteRule ^-truc-machin-bidule-chose-$ http://monsite.com/truc-machin-bidule-chose_11.html [L,R=301]
 
WRInaute passionné
attention : les RewriteCond ne s'appliquent qu'à la RewriteRule qui suit. Il faut répéter la condition si nécéssaire
 
Discussions similaires
Haut