Rewrite en fonction du domaine

  • Auteur de la discussion Auteur de la discussion awelty
  • Date de début Date de début
Nouveau WRInaute
Bonjour à tous,

Voici mon problème : je fais pointer plusieurs domaines vers la racine de mon site et avec un .htaccess je souhaite donner des règles de rewrite différentes selon le domaine. J'ai cherché longuement et fais plusieurs tests mais je n'y arrive pas. Il me semble qu'il faut utiliser REWRITECOND mais je n'ai pas réussi à m'en servir.

Pour schématiser mon probleme, Si je devais le faire en php je ferais ceci par exemple :

if(domaine == 'domaine1.com')
{
RewriteRule ^news.html$ site/index.php?num=2&site=domaine1 [L]
RewriteRule ^accueil.html$ site/index.php?num=1&site=domaine1 [L]
RewriteRule ^page.html$ site/index.php?num=3&site=domaine1 [L]
}
elseif(domaine == 'domaine2.com')
{
RewriteRule ^news.html$ site/index.php?num=2&site=domaine2 [L]
RewriteRule ^accueil.html$ site/index.php?num=1&site=domaine2 [L]
RewriteRule ^page.html$ site/index.php?num=3&site=domaine2 [L]
}
else
{
RewriteRule ^news.html$ index.php?num=2 [L]
RewriteRule ^accueil.html$ index.php?num=1 [L]
RewriteRule ^page.html$ index.php?num=3 [L]
}


Merci d'avance pour votre aide !!
 
Nouveau WRInaute
Oui, c'est déjà sur quoi j'étais arrivé :

Code:
RewriteCond %{HTTP_HOST} ^domaine1\.net
RewriteRule   ^index.html$   site/index.php?login=domaine1  [L]


Mais après? le rewrite suivant ne sera plus lié au REWRITECOND? et comment faire le "else" ?
 
WRInaute accro
>> Pour schématiser mon probleme, Si je devais le faire en php je ferais ceci par exemple :

Parfait!! tu peux le faire en php, tu iras plus vite a coder. Au passage: pas de "else" en .htaccess. 1 seul test de condition avec (if)
 
WRInaute accro
awelty a dit:
Je ne peux pas génerer un .htaccess en php ??

tu peux ecrire un fichier .htaccess avec la fonction fwrite de php. Mais tu ne peux pas integrer des commandes .htaccess directement dans du php. Puis je sais pas trop comment t'aider car je ne comprend pas exactement ce que tu veux faire.
 
Nouveau WRInaute
Ce que je veux c'est que en fonction du domaine (tous les domaines pointent à la racine, là où se trouve le .htaccess) qui appelle la page, on arrive sur page différente

par exemple, sur chaque domaine on accède via index.html, mais le chemin est différent.

exemple pour domaine1.com ca sera index.php
pour domaine2.com site/index.php?domaine=domaine2
pour domaine3.com site/index.php?domaine=domaine3
...

Je veux donc que des regles de rewrite différentes s'appliquent selon le domaine. Sachant que pour chaque domaine il y a plusieurs règles de rewrite.
 
WRInaute accro
awelty a dit:
Ce que je veux c'est que en fonction du domaine (tous les domaines pointent à la racine, là où se trouve le .htaccess) qui appelle la page, on arrive sur page différente

La je ne suis pas du tout.

Chez moi, 1 domaine = 1 ftp.

Mais toi tu me dis que : x domaines = 1 ftp
tu as tous tes domaines qui pointent sur la meme racine ? comment est-ce possible et gerable une telle bête ??
 
Nouveau WRInaute
Ce n'est pas la question que ce soit ingérable. 8O Car ca le sera pas, à chaque domaine ajouté, le .htaccess sera regenéré automatiquement. :D

Seulement, je veux juste savoir comment faire une condition sur un ensemble de règles de rewrite pour mettre cela au point :cry:
 
WRInaute accro
donc il te faut créer un fichier a chaque fois ? mais ca ne marchera jamais car le moteur php va d'abord pointer sur le .htaccess et ensuite sur il executera le php.

J'ai pris 5 minutes et je t'en ai monter une partie, le tout appuyer sur un tuto que j'ai fait :

http://www.phpsources.org/tutoriel-fichiers.htm#part_4

Code:
<?php 

$f = '.htaccess';
$text = 'RewriteRule ^news.html$ site/index.php?num=2&site=domaine1 [L]';
$text .= '/n';
$text .= 'RewriteRule ^news.html$ site/index.php?num=2&site=domaine1 [L]';
$text .= '/n';
$text .= 'RewriteRule ^news.html$ site/index.php?num=2&site=domaine1 [L]';


$handle = fopen($f,"r");

  if ($_SERVER['HTTP_HOST'] == 'domaine1.com')
// Ecriture 
    if (fwrite($handle, $text) === FALSE) { 
      echo 'Impossible d\'écrire dans le fichier '.$f.''; 
      exit; 
    } 
   }
    echo 'Ecriture terminé'; 
    
    fclose($handle); 
?>

Mais comme dit + haut, pour moi ca ne peut pas marcher a moins de creer le .htaccess et ensuite de refaire un header sur le domaine.

genre :
fwrite($handle, $text);
header("location:http://www.mondomaine1.com");
 
Nouveau WRInaute
C'est sympa, mais mon probleme se situe + au niveau de la structure du .htaccess que de la génération en php du .htaccess.

Et là, je n'ai toujours aucune piste à ce niveau...
 
WRInaute accro
- tu ne peux pas faire de else en .htaccess
- tu genere un fichier .htaccess selon le domaine d'ou ton visiteur vient. Tu vas m'expliquer comment tu va faire pour qu'1 visiteur venu d'un autre domaine lise le sien et pas celui du premier.

perso je dis que c'est impossible. Tu ne peux avoir qu'1 .htaccess et meme si t'arrive a recharger la page, pas sur que le navigateur accepte le nouveau .htaccess et tu auras forcement des gros problemes en cas de traffic a reecrire le meme fichier, surtout .HTACCESS!! ca va faire meuh ton serveur!!
 
Nouveau WRInaute
En fait, la seule solution est de mettre un RewriteCond %{HTTP_HOST} ^([^.]*)\.?domaine\.net devant chaque ligne de mon htaccess et ça fonctionne.. Un peu contraignant mais apparament pas le choix.

Il n'y a pas moyen de grouper plusieurs lignes à un "RewriteCond" plutot que de le placer au dessus de chaque ligne ?
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut