Jump to content
Zakuli

URL Rewiting, besoin d'Aide

Rate this topic

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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(.+)\.*

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Retire le flag [L] sur ta ligne RewriteCond ! ;)

 

 

Share this post


Link to post
Share on other sites

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 !

Share this post


Link to post
Share on other sites

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]

Share this post


Link to post
Share on other sites

Whouah, ça marche maintenant.

Super

Merci

Merci

Edited by Zakuli
oubli de prendre en compte de l'une de tes remarques

Share this post


Link to post
Share on other sites

Ben oui, une fois que tu as corrigé les erreurs de syntaxe ;)

 

Share this post


Link to post
Share on other sites

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 ?

 

Share this post


Link to post
Share on other sites

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]

 

 

Share this post


Link to post
Share on other sites

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é ?

Edited by Zakuli

Share this post


Link to post
Share on other sites

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]

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...