Aller au contenu

Sujets conseillés

Posté

Bonjour,

Débutant en URL Rewriting, je ne suis pas arrivé à créer les règles concernat le besoin ci-dessous :


Je construis une plateforme associative multisite dont le domaine est "www.multisite.com".

Toutes les associations devront y accéder à partir de leur propre domaine : www.asso1.com ou www.asso2.fr, ou www.asso3.net

Pour l'instant, le site fonctionne avec des url du type www.multisite.com/edit_art.php?asso=3&article=102 : on édite l'article N°102 pour l'association N°3

Maintenant, grâce à l'URL Rewriting, je voudrais que les associations puissent utiliser leur propre domaine pour accéder à leurs articles.

Pour cela l'URL Rewriting devra transformer :
www.asso1.com/art100 en www.multisite.com/edit_art.php?asso=1&article=100
www.asso2.fr/art101 en www.multisite.com/edit_art.php?asso=2&article=101
www.asso3.net/art102 en www.multisite.com/edit_art.php?asso=3&article=102

Quelles règles écrire pour obtenir le résultat voulu ?

Merci
Zakuli

Posté

J'e n'ai jamais essayé mais un truc dans ce genre pourrait passer :

RewriteCond %{HTTP_HOST} www\.asso(.+)\.com
RewriteRule ^art([0-9]+)$ /edit_art.php?asso=%1&article=$1
Posté

Il faudrait pour cela que le domaine principal soit multisite.com et que les domaines asso*.* soient déclarés comme alias de manière à ce que toute requête apache soit redirigée vers un seul et unique DOCUMENT_ROOT.

 

Et dans ce cas, cela devrait fonctionner ;)

 

Par contre :

RewriteCond %{HTTP_HOST} www\.asso(.+)\.com

suppose que tous les domaines aient un TLD en com ...

Il faudrait plutôt mettre ceci :

RewriteCond %{HTTP_HOST} www\.asso(.+)\.*

 

  • 2 semaines plus tard...
Posté

Bonjour,

Merci à tous les deux et désolé de ma réponse tardive, j'étais en déplacement.

 

J'ai donc tenté d'essayer physiquement votre proposition :

 

  • Création de 4 sous domaines : "urlrw.multisite.com", "urlrw1.multisite.com", "urlrw2.multisite.com", "urlrw3.multisite.com"
  • les 4 sous domaines pointent sur le répertoire "urlw"

Dans ce répertoire : deux fichiers,

  • "index.php" dans lequel on trouve le code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Essai URL Rewriting</title>
  </head>
  <body>
	asso : <?php echo $_GET['a']; ?>;<br>
    art : <?php echo $_GET['art']; ?>;
  </body>
</html>
  • ".htaccess", dans lequel on trouve le code :
Options +FollowSymlinks
RewriteEngine On
RewriteCond %(HTTP_HOST) urlrw(.+)\.multisite\.com [L]
RewriteRule ^art([0-9]+)$ urlrw.multisite.com/index.html?a=%1&art=$1 [L]
  • quand j'exécute le lien "urlrw1.multisite.com/art100" ou "urlrw1.multisite.com"  avec le fichier ".htaccess" dans le répertoire "urlrw" : j'ai la réponse suivante :

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at support@phpnet.org to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

 

  • si je retire le fichier ".htaccess" du répertoire "urlrw" et que j'appelle le lien "urlrw1.multisite.com"  : j'ai la réponse suivante :

asso : ;
art : ;

Rien de plus normal, mais ça montre au moins que les sous domaines pointent bien et qu'index.php est bien exécuté !

 

 

Que dois je faire maintenant pour corriger le sript ?

 

Merci

Zakuli

Posté

Je remarque aussi ceci dans ta ligne RewriteCond :

%(HTTP_HOST)

alors qu'il faut

%{HTTP_HOST}

c'est à dire des accolades au lieu des parenthèses !

Posté

En résumé :

RewriteEngine On
RewriteCond %{HTTP_HOST} urlrw(.+)\.multisite\.com
RewriteRule ^art([0-9]+)$ http://urlrw.multisite.com/index.html?a=%1&art=$1 [L]
Posté (modifié)

Whouah, ça marche maintenant.

Super

Merci

Merci

Modifié par Zakuli
oubli de prendre en compte de l'une de tes remarques
Posté

Bonjour,

Pas très clair mon titre, j'en conviens, je vais donc tenter d'expliciter mon problème.

Webmaster Hub, m'a donné un bon coup de main pour utiliser l'URLRewriting, et ça marche bien.

 

Par contre quand .htacces réécrit l'adresse "www.monsite.com/art100" en "www.monsite.com/edit_art.php?art=100", c'est ce dernier lien que je retrouve dans l'adresse, alors que j'aimerais conserver www.monsite.com/art100, un peu comme le fait cette page de Webmaster Hub : "https://www.webmaster-hub.com/forum/118-fichier-htaccess-et-réécriture-d39urls/"

 

Comment faire cela ?

 

Posté

Hello,

 

J'ai combiné tes deux messages, vu que le dernier est la suite du précédent.

 

J'essaierais ceci comme règle (si tu as mod_proxy installé) :

RewriteCond %{HTTP_HOST} urlrw(.+)\.multisite\.com
RewriteRule ^art([0-9]+)$ http://urlrw.multisite.com/index.html?a=%1&art=$1 [P]

En fait, seul le drapeau final change [L] devient [P]

 

 

Posté (modifié)

Désolé, j'ai cru que j'avais perdu mon message et j'en ai recréer un nouveau. J'ai tenté de le supprimer, mais n'ai pas trouvé comment le faire !

 

Si ta solution me renvoie :

Not Found

The requested URL /art100 was not found on this server.

 

C'est que le mod_proxy n'est pas installé ?

Modifié par Zakuli
Posté

Difficile de te répondre avec le peu d'éléments que j'ai ... il faut que je me renseigne

 

Essaie ceci :

RewriteRule /?art([0-9]+)$ http://urlrw.multisite.com/index.html?a=%1&art=$1 [P]

 

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...