Hello à tous,
Je viens vous demander de l'aide sur un problème qui me resiste depuis quelques heures et je deviens fou^^
Pour un projet, j'essaie de générer des sous domaines dynamique pour les membres à savoir :
url de base http://mon-site.com/users/viewprofil/shinix
qui donnerai : http://shinix.mon-site.com
du coup j'arrive maintenant à afficher "http://shinix.mon-site.com" mais il me dit qu'il ne trouve pas "The requested URL /webroot/users/viewprofil/ was not found on this server."
jai modifié comme ceci le .htaccess situé dans "webroot/.htaccess"
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.mon-site\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9_-]+)\.mon-site\.com$ [NC]
RewriteRule ^users/ - [L]
RewriteRule ^(.*[^/]) users/viewprofil/%1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Avez-vous une idée ?
Merci d'avance !
Mmmh le mieux serait d'envoyer les gens vers un fichier php unique (index.php) et de gérer le routing depuis ce fichier. Pour avoir une gestion plus fine qu'avec un .htaccess
Hello Grafikart, Merci pour ta réponse.
Effectivement j'ai laissé tombé peu après avoir posté mon message l'idée du .htaccess mais utilisé directement le routing.
Si quelqu'un a le même soucis un jour :
//Récupérer le sous-domaine:
$sous_domaine = substr($_SERVER['HTTP_HOST'], 0, strpos($_SERVER['HTTP_HOST'], '.'));
//condition
if($sous_domaine != 'www' && $sous_domaine !='nomdusite') {
$request = explode('/',$_SERVER['REQUEST_URI']);
if(!empty($request[1])) {
$action = $request[1];
if(isset($request[2])) {
$sous_domaine.="/".$request[2];
}
if(isset($request[3])) {
$sous_domaine.="/".$request[3];
}
if(isset($request[4])) {
$sous_domaine.="/".$request[4];
}
} elseif(isset($request[2]) && !empty($request[2])) {
$action = $request[2];
if(isset($request[3])) {
$sous_domaine.="/".$request[3];
}
if(isset($request[4])) {
$sous_domaine.="/".$request[4];
}
} else {
$action = 'index';
}
$_SERVER['REQUEST_URI'] = "users/".$action."/".$sous_domaine;
}
Le code est un peu barbare, mais redéfini la variable $_server en fonction du sous domaine et de la page du sous domaine (action).
Merci pour votre aide :)
Juste une petite remarque en passant.
Pourquoi laisser seulement la possibilité de mettre 4 parametres dans ta request ? Une boucle n'aurit pas été plus apropriée ?
Oui arnich j'aurais pu le faire en boucle, mais c'est pour le module users et il n'a que 4 paramètres au maxium donc il était tard et.. je me suis pas fait chier ^^
Ok.
Maintenant a cette heure a mon avis il est temps de faire un petit refactoring pour améliorer ce code :)