Aller au contenu

Rediriger un sous-domaine vers un dossier virtuel


Sujets conseillés

Bonjour,

voici la solution pour rediriger http://test.mondomaine.ext vers http://www.mondomaine.ext/test/ :

J'ai suivi ce post : http://forum.ovh.com/showthread.php?t=4562 mais le rewrite ne fonctionne pas, je remets ici ce qui fonctionne :

1ere étape : la redirection

1. dans /var/named/mondomaine.fr.hosts

j'ajoute

* IN XXX.XXX.XXX.XXX

(l'adresse ip du serveur)

2. dans usr/local/apache/conf/httpd.conf

je remplace :

<VirtualHost 213.251.133.128>
ServerAdmin webmaster_AT_mondomaine.fr
DocumentRoot /home/mondomaine/www
User mondomaine
Group users
ServerName www.mondomaine.fr
ServerAlias mondomaine.fr
CustomLog logs/mondomaine-access_log combined
ScriptAlias /cgi-bin/ /home/mondomaine/cgi-bin/
</VirtualHost>

par :

<VirtualHost 213.251.133.128>
ServerAdmin webmaster_AT_mondomaine.fr
DocumentRoot /home/mondomaine/www
User mondomaine
Group users
ServerName www.mondomaine.fr
ServerAlias mondomaine.fr
ServerAlias *.mondomaine.fr
CustomLog logs/mondomaine-access_log combined
ScriptAlias /cgi-bin/ /home/mondomaine/cgi-bin/
</VirtualHost>

3. je redémarre les services depuis webmin et je crée un répertoire /test dans /home/mondomaine/www

4. je place un .htaccess dans /home/mondomaine/www

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www.mondomaine.fr$ [NC]
RewriteCond %{HTTP_HOST} ^(.+)\.mondomaine\.fr$ [NC]
RewriteRule ^/?(.*) [url="http://www.mondomaine.fr/%1/$1"]http://www.mondomaine.fr/%1/$1[/url] [QSA,R=301,L]

Ainsi le visiteur qui ira sur test.mondomaine.fr sera renvoyé sur www.mondomaine.fr/test/

2eme étape : rendre la redirection invisible : conserver "test.domaine.fr" affiché dans le navigateur

1. il faut installer mod_proxy qui n'est pas par défaut dans apache de la release 2 d'ovh :

Tu vas dans le dossier du fichier ebuild

cd /usr/local/portage-ovh/net-www/apache-ovh

Tu édites ce fichier ebuild (changer éventuellement le numéro de version, plus bas aussi)

vi apache-ovh-2.0.59.ebuild

Tu ajoutes les lignes enable-proxy et enable-proxy-http

../..
--enable-rewrite \
--enable-proxy \
--enable-proxy-http \
../..

Comme le fichier ebuild a été modifié, il faut mettre à jour le "manifest"

ebuild apache-ovh-2.0.59.ebuild digest

Compilation d' apache avec les nouvelles options

emerge apache-ovh

ça compile... tu prends un café et tu penses que ce soir, pour une fois, tu pourrais acheter des fleurs à ta femme (vous me remercierez après)

puis tu relances apache

/etc/init.d/apache restart

2. Modifier le .htaccess :

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www.mondomaine.fr$ [NC]
RewriteCond %{HTTP_HOST} ^(.+)\.mondomaine\.fr$ [NC]
RewriteRule ^/?(.*) [url="http://www.mondomaine.fr/%1/$1"]http://www.mondomaine.fr/%1/$1[/url] [P,QSA,R=301,L]

Et voilà !

Merci à Dan pour son aide

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

Je ferais une remarque :

Il est inutile d'ajouter ceci dans le fichier named.conf :

zone "*.mondomaine.fr" {
type master;
file "/var/named/mondomaine.fr.hosts";
};

vu que la zone mondomaine.fr est déjà définie... ;)

Et je remplacerais la règle par :

RewriteRule ^/?(.*) http://www.mondomaine.fr/%1/$1 [QSA,R=301,L]

pour éviter d'avoir un double // au cas où le / ferait partie de la chaîne transmise à mod_rewrite.

Je ne comprends pas ta dernière phrase :

Mon dernier problème est de faire cette redirection de manière invisible sans créer un boucle de redirection...

Que veux-tu dire par "invisible" ? COmme la redirection est externe, tu auras toujours la nouvelle adresse dans l'URL.

Ou alors il faut utiliser mod_proxy :P

Lien vers le commentaire
Partager sur d’autres sites

Merci Dan !

J'ai fait la correction et je me renseigne sur mod_proxy.

Le but étant que sur le navigateur, le visiteur reste sur test.domaine.fr/blabla ce que j'avais traduit par "redirection invisible sans créer un boucle de redirection" car évidement si j'écris :

RewriteRule ^/?(.*) /%1/$1 [QSA,R=301,L] 
ou
RewriteRule ^/?(.*) http://%{HTTP_HOST}/%1/$1 [QSA,R=301,L]

Je boucle en boucle en boucle en boucle en boucle en boucle en boucle en boucle en boucle ....

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

C'est bête mais je ne trouve pas où télécharger mod_proxy.so, je ne trouve que des .c... (et en plus c'est mod_proxy_html donc c'est pas bon)

Mon répertoire apache/modules est presque vide : mod_suphp.so et httpd.exp font une bataille en attendant leur compagnon !

(lien vers la doc, je complèterai mon premier post quand j'aurai trouvé le St Graal) :

http://httpd.apache.org/docs/2.0/mod/mod_proxy.html

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

Je sèche..

Impossible de faire prendre en compte le mod_proxy à apache, j'ai recompilé je ne sais combien de fois sans succès et un plantage m'a mis le serveur en rade pendant 1 heure. Je vais donc passer à autre chose en attendant une nouvelle piste... J'aurais bien voulu terminer ce tuto :/

Lien vers le commentaire
Partager sur d’autres sites

Tu es en release 2 ... voici donc les instructions pour recompiler Apache avec mod_proxy ;)

Tu vas dans le dossier du fichier ebuild

cd /usr/local/portage-ovh/net-www/apache-ovh

Tu édites ce fichier ebuild (changer éventuellement le numéro de version, plus bas aussi)

vi apache-ovh-2.0.59.ebuild

Tu ajoutes les lignes enable-proxy et enable-proxy-http

../..
--enable-rewrite \
--enable-proxy \
--enable-proxy-http \
../..

Comme le fichier ebuild a été modifié, il faut mettre à jour le "manifest"

ebuild apache-ovh-2.0.59.ebuild digest

Compilation d' apache avec les nouvelles options

emerge apache-ovh

ça compile... et au final tu relances apache

/etc/init.d/apache restart

Cela devrait fonctionner comme tu veux et tu pourras utiliser le flag [P] dans tes réécritures d'URLs.

Bonne chance à toi :!:

Lien vers le commentaire
Partager sur d’autres sites

AHHHHHHHHHHHHH

C'est ce que j'ai fait mais comme je ne voyais rien dans phpinfo je me disais que ce n'avait pas fonctionné !

Du coup suite à ton message, j'ai essayé le [P] et ça fonctionne : eureka !

Merci Dan !

Je complète le tuto de ce pas.

Lien vers le commentaire
Partager sur d’autres sites

C'est parfait comme solution !!!

je suis intéressé :)

ps : je considère que le 1er post est celui de référence (oui/non ?)

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