Aller au contenu

Le fichier .htaccess


Sujets conseillés

Salut à tous.

Intéressant ce post !

J'ai tenté de mettre ceci dans mon .htaccess :

RewriteEngine on
RedirectPermanent / http://www.nouveau-domaine.com

Mais voilà.... j'ai une erreur 404.... !

Mon adresse d'origine ressemble à http://www.domaine.com/rep/sous-rep/ et je dois me rendre sur http://www.nouveau-domaine.com/.

Bien sûr, j'ai mis le .htaccess dans le répertoire "rep/sous-rep"...

Je ne vois pas comment sortir de petit mais génant problème...

Une idée messieurs les masters ?

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 120
  • Créé
  • Dernière réponse

Contributeurs actifs dans ce sujet

Contributeurs actifs dans ce sujet

Images postées

Salut salut

Salut Thierry,

Dans ce cas précis, le RedirectPermanent ne fonctionnera pas, parce que tu renommes mairies.htm en ... mairies.htm :( même s'il est dans un autre répertoire.

Je ne vois d'ailleurs pas bien ce que cela t'apporte en terme de mots clés car tu ne fais que répéter un mot clé qui y est déjà...

Si tu y tiens absolument, tu pourrais utiliser plutôt RedirectMatch car celui-ci permet des expressions régulières que ne permet pas le RedirectPermanent, par exemple:

RedirectMatch 301 ^/(mairies)\.html$ http://www.conseilgeneral.com/$1/$1.html

ou encore:

RedirectMatch 301 ^/(mairies|truc|machin|bidule)\.html$ http://www.conseilgeneral.com/$1/$1.html

Ce dernier te permettrait de rediriger /machin.html en machin/machin.html ;)

<{POST_SNAPBACK}>

Est-ce que cette redirection match

RedirectMatch 301 ^/(mairies|truc|machin|bidule)\.html$ http://www.conseilgeneral.com/$1/$1.html

fonctionnerait pour rediriger non page une page de la racine vers un sous-repertoire, mais une page de sous-repertoire vers la même page en racine (la page porte le même nom.)

Exemple, on déplace un phpBB qui se trouvait dans le répertoire /forum/de la racine. On imagine que des usagers ont mis en favoris l'adresse http//lesite.tld/forum/index.php ou encore un topic du forum, ce qui donnerait dans leur bookmark http://lesite.tld/forum/viewtopic.php...

Si oui, dans l'écriture de RedirectMatch 301 ^/(mairies|truc|machin|bidule), je ne saurais où placer le nom de l'ancien répertoire...

Une autre question, l'article dit dans le cas d'un changement de domaine, si j'ai bien compris :

RedirectPermanent http://ancien-domaine.tld/ http://www.nouvau-domaine.tld/

Mais en tapant http://ancien-domaine.tld/, (qui est un nom de domaine toujours effectif), moi j'ai toujours l'adresse de l'ancien domaine qui se trouve dans la barre d'url. En effet, l'ancien nom de domaine pointait déjà vers la racine où pointe aussi l'actuel nom de domaine, mais mon but est qu'on oublie définitivement l'ancien nom au profit du nouveau... Je pensais donc que pour la même page accueil affichée, l'adresse en revanche changerait :nono:

Lien vers le commentaire
Partager sur d’autres sites

Hello,

a la place de

RedirectPermanent http://ancien-domaine.tld/ http://www.nouvau-domaine.tld/

essai

RedirectPermanent /ancien-domaine.tld/ http://www.nouvau-domaine.tld/

pour voir si ça marche mieux (ne met pas le http:://www. mais directement le / (chez moi ça marche)

Lien vers le commentaire
Partager sur d’autres sites

Non, marche pas :(

On dirait qu'un nom de domaine actif, pointant vers la même racine qu'un autre domaine, ne peut pas être voilé pas un htaccess (ce qui finalement semblerait logique, à bien y regarder... on pourrait faire pointer webmaster-hub.com vers n'importe quoi par exemple)

Je ne sais pas s'il y a une solution (mais merci pr ta contrib)

En revanche j'aimerais au moins pouvoir rediriger tous les viewtopic.php et le index.php d'un ancien phpBB vers la racine, où est installé l'ancien : en gros j'ai remonté simplement d'un répertoire; et je voudrais pouvoir faire un redirection à l'attention des usagers ayant gardé l'ancien chemin d'accès en favoris.

D'où ma question sur la redirection match de Dan...

Une idée ?

Lien vers le commentaire
Partager sur d’autres sites

Ah bah en fait je viens de tenter le coup... j'ai fait :

RedirectPermanent /ancienrepertoire/index.php http://racine-du-site/index.php

.htaccess que j'ai mis donc à la racine.

Ca fonctionne pour index.php apparemment. Je n'ai donc pas bien compris ce que disait Dan :nono:

Dans ce cas précis, le RedirectPermanent ne fonctionnera pas, parce que tu renommes mairies.htm en ... mairies.htm sad.gif même s'il est dans un autre répertoire.

C'est pourtant mon cas avec index.php. Le nom de page est le même, le répertoire est différent :huh:

Lien vers le commentaire
Partager sur d’autres sites

Salut JJJ,

Si on change le nom de domaine en gardant le même hébergement, il faut faire une réécriture conditionnelle.

C'est simple à comprendre: si tu as les domaines a.tld et b.tld sur le même hébergement, et que tu veux rediriger tout le trafic de a.tld vers b.tld, il est obligatoire de mettre une réécriture conditionnelle.

Un simple:

RedirectPermanent /   http://b.tld/

ne suffira pas, parce qu'il redirigera aussi b.tld/ vers b.tld/ vers b.tld/ etc... tu auras donc une boucle sans fin.

Il faut donc utiliser mod_rewrite !

Par exemple, sur le Hub, je redirige toutes les pages auxquelles il manque le www vers le domaine www.webmaster-hub.com comme ceci:

RewriteCond %{HTTP_HOST} !www.webmaster-hub.com$
RewriteRule (.*) http://www.webmaster-hub.com/$1 [R=301,L]

Dans ton cas, il faut donc mettre, pour tout rediriger vers www.b.tld:

RewriteCond %{HTTP_HOST} !www.b.tld$
RewriteRule (.*) http://www.b.tld/$1 [R=301,L]

Cela aura aussi l'avantage de rajouter le www s'il manque ;)

J'espère que c'était clair ?

Lien vers le commentaire
Partager sur d’autres sites

Merci !

RewriteCond %{HTTP_HOST} !www.b.tld$
RewriteRule (.*) http://www.b.tld/$1 [R=301,L]

Ce que je ne saisis pas, c'est où est-ce que tu renseignes l'url a.tld ou même www.a.tld dans ton expression conditionnelle.

Si tout ce qui passait par a.tld auparavant doit diriger vers b.tld, je ne comprends pas pourquoi le domaine a.tld n'est pas renseigné dans l'expression que tu me donnes.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, je me permets de signaler une ressource bien utile en complément de l'article sur le htaccess mais aussi le mod rewrite. Ca se trouve , et ça donne en image des sortes d'aide-mémoire pour toutes expressions conditionnelles..etc.

Exemple (j'espère que l'image n'est pas trop grande) :

Téléchargeable aussi en PDF :)

(PS pour pas faire de doublon : on trouvera le même genre d'anti-sèches pour les CSS, PHP... :wub: )

post-1-1118383312_thumb.png

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines plus tard...

Pour de rire, avant le w-end (on peut hein ?).

Puisque cet article traite entre autre de la gestion des 404 personnalisées : La firme Peugeot vient de décider de traîner en justice tous les sites web qui afficheront un message 404 lorsqu'une page n'est pas trouvée :

Selon le responsable de la communication ("propagande" en français) :

"La 404 est une voiture sympa et mythique, et ceux qui associent ce nombre à une erreur nuisent gravement à notre image".

;)

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines plus tard...
Un simple:

RedirectPermanent /   http://b.tld/

ne suffira pas, parce qu'il redirigera aussi b.tld/ vers b.tld/ vers b.tld/ etc... tu auras donc une boucle sans fin.

Il faut donc utiliser mod_rewrite !

Par exemple, sur le Hub, je redirige toutes les pages auxquelles il manque le www vers le domaine www.webmaster-hub.com comme ceci:

RewriteCond %{HTTP_HOST} !www.webmaster-hub.com$
RewriteRule (.*) http://www.webmaster-hub.com/$1 [R=301,L]

Dans ton cas, il faut donc mettre, pour tout rediriger vers www.b.tld:

RewriteCond %{HTTP_HOST} !www.b.tld$
RewriteRule (.*) http://www.b.tld/$1 [R=301,L]

<{POST_SNAPBACK}>

Super, c'est exactement ce que je cherchais car je bataillais avec RedirectPermanent sans trouver la solution.

Une petite recherche sur le Hub et hop c'est gagné.

Merci Dan :)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Qui me viendra en aide car je sèche...?

Sur un futur site j'aurai 2 sous-domaines pointant sur 2 répertoires différents selon une forme assez traditionnelle du style :

http://sousdomaine1.domaine.com --> http://www.domaime.com/repertoire/

Je souhaiterai maintenant INTERDIRE la consultation de toute page appelée selon la 2e forme et forcer le serveur à renvoyer la 1ère soit

soit http://www.domaime.com/repertoire/*.htm --> http://sousdomaine1.domaine.com/*.htm

Les différents essais que j'ai faits ne sont pas du tout probants.

Merci de votre aide.

Lien vers le commentaire
Partager sur d’autres sites

Salut Mandala75,

A la racine du site (dans -http://www.domaime.com/repertoire/ ) tu mets un fichier .htaccess avec ceci:

RewriteEngine On
RewriteCond %{HTTP_HOST} !sousdomaine.domaine.com$
RewriteRule (repertoire/)?(.*) http://sousdomaine.domaine.com/$2 [R=301,L]

Pense à remplacer domaine et sousdomaine dans l'expression ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines plus tard...

Hello,

Je viens de changer le répertoire de mon blog qui était auparavant à la racine du server, et je suis pas très sure pour le redirect permanent...

C'est bien celui ci ?

RedirectPermanent / http://www.domaine.tld/blog/

Merci d'avance :D

Lien vers le commentaire
Partager sur d’autres sites

bon, j'ai essayer dans tout les sens mais rien n'y fait, la redirection ne marche pas....

comme je le disais plus haut, j'avais un blog dotclear la racine, deplus j'utiliser l'url rewriting pour enlever le index.php, maintenant tout est installer dans le rpertoire "dotclear" et j'utilise le "pathinfo comme ceci:

1) créer un répertoire dotclear

2) tout déplacer dans ce répertoire

3) copier /dotclear/index.php à la racine

4) corriger le app_path dans l'index.php de la racine pour qu'il pointe vers /dotclear/

5) copier /index.php en /blog.php

6) corriger l'URL vers le weblogue dans la config pour pointer vers /blog/

je voudrai faire une redirection de http://www.domaine.com -- http://wwwdomaine.com/blog/

mais rien n'y fait, ou alors a donne http://www.domaine.com/blog/blog/blog/blog...... tester avec les outils mis a disposition ici meme.

voil, c'est plus clair que mon premier post. :lol:

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Yonji,

Si cela boucle c'est que tu as une autre redirection dans le répertoire /blog ...

Quelle est l'URL du domaine, et quel est le contenu du fichier .htaccess ?

Dan

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Dan,

voici l'adresse du site, concernant le fichier .htaccess (que j'ai effacer), il y avait juste cette ligne :

RedirectPermanent / http://www.domaine.tld/blog/

ca comment a nous rendre chevre tout ca ! :P

P.S: Desolee d'ecrit sans accents, mais je les possede pas.

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

  • 3 semaines plus tard...

Bonjour,

J'ai une question, comment le couple .htaccess/.htpasswd fait pour savoir si le password est bon vu que dans le .htpasswd on peut le crypté avec plusieurs algorythmes (AES,DES,MD5) ou la fonction crypt de PHP qui sort plusieurs hash pour un même mot ou simplement ne pas le crypté. :blink:

merci

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...

bonjour,

j'ai deux domaines toto.com et toto.net qui sont tous deux heberges sur le meme serveur. Je vousdrais n'avoir qu'une adresse officielle : toto.net .

Comment modifier le .htaccess pour que :

Avec machin.php valable pour n'importe quel fichier heberge sur le site

toto.com --> toto.net
www.toto.com --> toto.net
www.toto.net --> toto.net
toto.com/machin.php --> toto.net/machin.php
www.toto.com/machin.php  --> toto.net/machin.php
www.toto.net/machin.php  --> toto.net/machin.php

merci

Fred

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

Tout simplement avec :

RewriteCond %{HTTP_HOST} !toto.net$
RewriteRule (.*) http://toto.net/$1 [R=301,L]

Cela devrait marcher... C'est ce que j'utilise sur le Hub depuis 2 ans :)

RewriteCond %{HTTP_HOST} !www.webmaster-hub.com$
RewriteRule (.*) http://www.webmaster-hub.com/$1 [R=301,L]

Assures-toi d'avoir mis "RewriteEngine on" au dessus de ce code ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

Merci

J'ai au moins qqs resultats, j'avais oublie "RewriteEngine on" grrrr

Ce qui marche ;

toto.com --> toto.net

toto.com/machin.php --> toto.net/machin.php

Ce qui ne marche pas

www.toto.com --> www.toto.com

www.toto.net --> www.toto.net

www.toto.com/machin.php --> www.toto.com/machin.php

www.toto.net/machin.php --> www.toto.net/machin.php

J'aimerai comprendre aussi :

RewriteCond %{HTTP_HOST} !toto.net$

signifie t'il Si HTTP_HOST different de toto.net ?

Encore merci

Lien vers le commentaire
Partager sur d’autres sites

Ce qui ne marche pas

www.toto.com --> www.toto.com

www.toto.net --> www.toto.net

www.toto.com/machin.php  --> www.toto.com/machin.php

www.toto.net/machin.php  --> www.toto.net/machin.php

J'aimerai comprendre aussi :

RewriteCond %{HTTP_HOST} !toto.net$

signifie t'il Si HTTP_HOST different de toto.net ?

Qu'est ce qui ne marche pas ? Tes exemples ne sont pas clairs...

Tu peux forcer le host à toto.net en changeant la condition:

RewriteCond %{HTTP_HOST} !^toto.net$

(ajout de ^ au début)

Cette condition signifie effectivement "si le host n'est pas toto.net"

Dan

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...