url rewriting - besoin d'aide

Nouveau WRInaute
Bonjour à tous,

J'ai un site dans lequel j'ai placé mes pages dans un répertoire nommé "sites_clq".
On accède à mes pages avec ces adresses:
http://www.monsite.com/sites_clq/mapage.html

J'aimerais avec un fichier .htaccess renommer ce répertoire en "site" dans la barre d'adresse du navigateur pour obtenir :
http://www.monsite.com/site/mapage.html

Ou encore mieux supprimer virtuellement l'afichage du nom de ce dossier pour obtenir :
http://www.monsite.com/mapage.html

Mon hébergement est bien configuré et accepte l'url rewriting, j'ai fait de nombreuse recherches et essais mais sans succès.

Une solution ?
 
WRInaute impliqué
A la racine du site tu peux mettre ce qui suit dans ton .htaccess (je suppose que tu es sous Apache, mais tu ne l'as pas précisé):

Code:
RewriteEngine On

RewriteRule (.*) /site_clq/$1 [QSA,L]

Et tu change tous tes liens en enlevant /site_clq

Normalement, si tu entre -http://www.monsite.com/mapage.html tu obtiens l'affichage de la page -http://www.monsite.com/sites_clq/mapage.html
 
Nouveau WRInaute
Merci,

Ca marche !

Seul problème, je ne m'attendais pas à cela, j'ai plusieurs noms de domaines qui pointent vers mon site.

J'ai une page php « index.php » à la racine de mon site qui redirige le visiteur vers une page différente sur mon site en fonction du nom de domaine saisi.

Par exemple si le visiteur à saisis www.example1.com il est redirigé vers la "sites_clq/example1.html", si il à saisi example2.com il est redirigé vers la dossier " sites_clq/example2.html".

Si je place le fichier htaccess à la racine au même niveau que la page index.php les redirections ne fonctionnent plus.

En revanche si je tape directement http://www.example1.com/example1.html ça marche, alors que la page se trouve dans http://www.example1.com/sites_clq/ example1.html

Pourtant j'ai bien changé mes liens de redirection dans ma page index.php avant il était du type :
Si tu as tapé www.example1.com tu es redirigé vers
http://www.example1.com/sites_clq/example1.html

Depuis que j'ai placé le htacces j'ai mis :
Si tu as tapé www.example1.com tu es redirigé vers
http://www.example1.com/example1.html

Mais là la redirection ne fonctionne plus.

Voici le bout de code php qui me permet de rediriger vers une page en fonction du nom de domine saisi :

Code:
// On Récupère l'url saisie

function url_actuelle()
{
     return "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
}

$domaine =  url_actuelle();

if($domaine == "http://www.example1.com/"){
header("Status : 302 Moved Permanently");
header("Location: http://www.example1.com/mapage.hmtl");
exit();
}

Comment puis-je conservé ce sytème de redirection avec l’url rewritting ?
Peut-être dois-je faire à présent les redirections directement dans le htaccess lui-même plutôt que dans une page php.
Mais dans ce cas je ne sais pas comment faire.

Merci à vos âmes charitables, dites moi si je ne suis pas assez clair.
 
WRInaute impliqué
Je ne comprends rien, peut etre ne suis je pas assez révéillé!

Peux tu dire précisément:

Où se trouve ta page index.php? Dans /sites_clq/ ou dans /
Vers quels répertoires pointent tes snoms de domaine: / ou /sistes_clq, ou autre chose.

Peux tu dire pourquoi tu ne créee pas un répertoire par nom de domaine et tu fais pointer chaque nom de domaine vers son répertoire? Veux tu partager des ressources entre tes sites? Parce que sinon, avoir un répertoire par siteest de loin la solution la plus simple.

Au passage, dans ton code PHP tu devrais avoir un status 301 et non 302. Et en plus tu devrais utiliser autre chose pour indiquer la redirection:

Code:
// On Récupère l'url saisie

function url_actuelle()
{
     return "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
}

$domaine =  url_actuelle();

if($domaine == "http://www.example1.com/"){
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: http://www.example1.com/mapage.hmtl");
exit();
}

Mais je pense qu'on pourra tout régler par .htaccess si tu répond a mes questions.
 
Nouveau WRInaute
Merci,

Je pense que c’est moi qui explique mal ma configuration.

J’ai une interface spip (une seule pour quelques sites) une rubrique spip pour chaque site.

Donc je n’ai pas de répertoire distinct pour chaque site.

En fait lorsqu’un visiteur tape http://www.example1.com il est redirigé vers
La rubrique spip exemple1

Si le visiteur tape http://www.example2.com il est redirigé vers
La rubrique spip exemple2

J’ai un serveur dédié avec un domaine par défaut dessus, lorsque j’achète un nom de domaine chez gandi (par exemple) j’indique dans les dns l’adresse ip de mon serveur qui pointe automatiquement vers mon domaine par défaut (c’est pas évident à expliquer je comprend que tu patauges un peu).

Donc ma page index.php se trouve à la racine de mon serveur (/) et pas dans /sites_clq

Mon index.php redirige vers la rubrique spip souhaitée en fonction du nom de domaine saisi
par exemple si le visiteur à tapé : http://www.example1.com
Il est redirigé vers http://www.example1.com/sites_clq/spip. ... e=exemple1

Merci.
 
WRInaute impliqué
Bon,

la solution la plus simple est de dire que les DNS a utiliser sont ceux de l'hébergeur. Ensuite, chez l'hébetr geur, tu fais pointer chaque ndd vers son répertoire.

Si tu ne veux pas faire ça, dis le, et on verra comment faire autre chose par .htaccess.

Par ailleurs, je suis comme toi, je prend mes ndd chez Gandi, et j'héberge ailleurs (Gandi n'hébergeait pas à l'éopque). Au moins, en cas de pb tu peux changer d'hébergeur facilement.
 
Nouveau WRInaute
Voilà en gros c'est ça.

Sauf qu'au lieu d'être redirigé vers un répertoire chaque ndd est redirigé vers une rubique spip qui lui est propre.

On peux faire cela via un htaccess ?

Merci.
 
WRInaute impliqué
ON peut faire beaucoup de choses, mais je ne connais pas spip.

Sans cette connaissance il peu probable que les règles que je te proposerait marchent. Désolé.

Je continue a penser que ce serait plus simple que tu associe chaque ndd a un répertoire différent, comme je te l'ai expliqué plus haut.
 
Nouveau WRInaute
Bon ben j'ai renommé manuellement mon répertoire en changeant tout mes liens, ce n'est pas très propre et je j'en ai surrement oublié qui seront mis à jour au fur et à mesure.

Le fait que mes sites soit sous spip ne pose pas de problème je pense puisqu'il s'agit en fait de rediriger chaque ndd vers une page spip différente.

Si le visiteur à saisit http://www.example1.com il est redirigé vers cette page : http://www.example1.com/spip.php?rubrique1

Si le visiteur à saisit http://www.example2.com il est redirigé vers cette page : http://www.example1.com/spip.php?rubrique2

Quelle serait la différence avec un redirection vers deux répertoire distints ?

Je pense que c'est gérable de la même façon non ?

Merci.
 
WRInaute impliqué
Bon,

je vais essayer quand même, sans garantie.

Je suppose que tu as un serveur apache. Il faut que tu crée un fichier .htaccess à la racine de ton site. Ce fichier doit contenir ce qui suit

Code:
Options +FollowSymLinks
RewriteEngine On

La première ligne n'est pas nécessaire chez certains hébergeurs.

Ensuite, pour chaque ndd tu met les lignes suivantes, ici pour example1.com:

Code:
RewriteCond %{HTTP_HOST} ^example1.com$
RewriteRule ^$ http://www.example1.com/spip.php?rubrique1 [R=301,L]
 
Nouveau WRInaute
Bon alors,

Les redirections fonctionnent, cependant elle fonctionnent si le visiteur tape http://example1.com, mais pas si il tape http://www.example1.com

Quelles sont les options à rajouter pour que la redirection fonctionne dans les 2 cas ?

Deuxième question (j'en demande peut-être un peu trop), la redirection se fait mais l'url :
http://www.example1.com/sites_clq/spip.php?rubrique=exemple1 est toujours affichée.

Est-il possible lors de la redirection de supprimer l'affichage du repertoire "site_clq" ?
Pour obtenir : http://www.example1.com/spip.php?rubrique=exemple1

C'est pas facile tout ca, merci pour ta patience.
 
WRInaute impliqué
ripcurl45 a dit:
Bon alors,

Les redirections fonctionnent, cependant elle fonctionnent si le visiteur tape http://example1.com, mais pas si il tape http://www.example1.com

Quelles sont les options à rajouter pour que la redirection fonctionne dans les 2 cas ?

Il suffit de modifier un peu la règle:

Code:
RewriteCond %{HTTP_HOST} example1.com$
RewriteRule ^$ http://www.example1.com/spip.php?rubrique1 [R=301,L]

Là ca redirigera aussi tous les sous domaines de example1.com

ripcurl45 a dit:
Deuxième question (j'en demande peut-être un peu trop), la redirection se fait mais l'url :
http://www.example1.com/sites_clq/spip.php?rubrique=exemple1 est toujours affichée.

Est-il possible lors de la redirection de supprimer l'affichage du repertoire "site_clq" ?
Pour obtenir : http://www.example1.com/spip.php?rubrique=exemple1

je me doutais que tu voudrais cela, et c'est ce qui me semble difficile a faire sans connaitre comment marche spip. La règle que je te donne envoie vers /spip.php?rubrique1. Qu'est-ce qui envoie vers /sites_clq/spip.php?rubrique1 ?
 
Nouveau WRInaute
Merci les redirections fonctionnent avec tous les sous domaines.

Le répertoire "site_clq" est mon dossier racine spip dans lequel se trouve la page spip.php lorsqu'on indique à cette page
"?rubrique1" par exmemple spip nous affiche la rubrique 1 qui chez moi correspond à la page d'accueil du site :
http://www.example1.com

Je voudrais juste masquer l'affichage du dossier racine spip dans l'url.

J'y suis presque arrivé en ajoutant une ligne de code que tu m'avais indiqué la première fois voici ce que j'ai fait :

Code:
########## Liste des redirections par nom de domaine ##########

RewriteCond %{HTTP_HOST} example1.com$
RewriteRule ^$ http://www.example1.com/spip.php?rubrique1 [R=301,L]

RewriteCond %{HTTP_HOST} example2.com$
RewriteRule ^$ http://www.example2.com/spip.php?rubrique2  [R=301,L]


########## on masque l'affichage du répertoire (site_clq) ##########
#RewriteRule (.*) /site_clq/$1 [QSA,L]

Et là ca marche presque sauf que du coup se sont mes images dans les pages qui ne s'affichent plus.
Elles sont placées dans un dossier Userfile à la racine du site.

Je pense que tout ca est un peu trop compliqué je vais laisser tel quel.

A moins que tu n'est une solution miracle, j'ai posté cette question dans les forums spip mais pas de réponse.

Merci pour tout.
 
WRInaute impliqué
Pour tes images, tu dois avoir un chemin relatif, du genre

Code:
<img src="Userfile/image1.jpg" alt="" />

Il faudrait mettre un chemin absolu, du genre

Code:
<img src="/Userfile/image1.jpg" alt="" />

Ca doit pouvoir se configurer dans spip, enfin j'espère.

Sinon, on doit pouvoir réécrire les url des images aussi dans le .htaccess
 
Discussions similaires
Haut