[Apache] Problème de RewriteRule

Problème de RewriteRule [Apache] - Windows & Software

Marsh Posté le 08-11-2004 à 15:51:38    

Bonjour à tous,
 
Avec apache, j'ai un petit problème que je pense être résolvable via RewriteRule mais je ne vois pas comment.
Mon site est multilingue. L'accès au site français se fait par http://www.monsite.com?site_id=1 et le site anglais par http://www.monsite.com?site_id=2. D'habitude, on utilise des virtuals hosts et RewriteRule pour mapper le port 8011 avec le site_id=1 et 8012 avec site_id=2.
Le problème est que cette fois le client veut www.monsite.com/fr/ et www.monsite.com/en/
Ca ne le gène pas d'utiliser plusieurs ports mais il ne veut pas voir apparaitre les ports dans l'url ni utiliser fr.monsite.com et en.monsite.com
 
Je pensais regler le problème en déclarant un virtualhost sur le port 80 qui aurait 2 RewriteRule pour rediriger vers les deux virtuals hosts mais j'ai l'impression que ça ne marche pas ...
Voila mon fichier host.
Qu'est-ce que j'ai fait de mal ?
 
Merci d'avance.
 

Code :
  1. <VirtualHost 1.2.3.4>
  2. RewriteEngine on
  3. RewriteRule ^http://1.2.3.4/fr/(.*)$ http://1.2.3.4:8011/index.php?site_id=1
  4. RewriteRule ^http://1.2.3.4/en/(.*)$ http://1.2.3.4:8012/index.php?site_id=2
  5. </VirtualHost>
  6. ########### FRANCAIS ############
  7. <VirtualHost 1.2.3.4:8011>
  8. DocumentRoot /sources
  9. DirectoryIndex index.php?site_id=1
  10. RewriteEngine on
  11. RewriteRule ^/page/(.*)$ /index.php?site_id=1
  12. ErrorDocument 404 /index.php?site_id=1
  13. ErrorDocument 501 /index.php?site_id=1
  14. ErrorDocument 503 /index.php?site_id=1
  15. </VirtualHost>
  16. ########### ANGLAIS ############
  17. <VirtualHost 1.2.3.4:8012>
  18. DocumentRoot /sources
  19. DirectoryIndex index.php?site_id=2
  20. RewriteEngine on
  21. RewriteRule ^/page/(.*)$ /index.php?site_id=2
  22. ErrorDocument 404 /index.php?site_id=2
  23. ErrorDocument 501 /index.php?site_id=2
  24. ErrorDocument 503 /index.php?site_id=2
  25. </VirtualHost>

Reply

Marsh Posté le 08-11-2004 à 15:51:38   

Reply

Marsh Posté le 08-11-2004 à 15:57:06    

Pour rendre ma question plus clair, je voudrais juste que quand je tape www.monsite.com/fr/*, ça fasse comme si j'avais tapé www.monsite.com:8011/*

Reply

Marsh Posté le 08-11-2004 à 17:02:20    

J'ai essayé en remplaçant le premier virtual host par  
 

Code :
  1. <VirtualHost 1.2.3.4:80>
  2. RewriteEngine on
  3. RewriteRule ^/fr(.*)$ http://1.2.3.4:8011$1
  4. RewriteRule ^/back(.*)$ http://1.2.3.4:8010$1
  5. RewriteRule ^/en(.*)$ http://1.2.3.4:8012$1
  6. </VirtualHost>


 
Dans ce cas, ça fonctionne comme un redirect (l'url est modifiée dans le navigateur). Pourtant d'habitude ça ne fonctionne pas comme ça ...
 
Pourquoi tant de haine ?  :(

Reply

Marsh Posté le 11-01-2005 à 21:08:47    

alors ? du nouveau ?


---------------
Mon site http://j2c.org
Reply

Marsh Posté le 11-01-2005 à 22:26:55    

Juste un détail mais pourquoi ne pas plutôt utiliser des classes PHP pour la gestion des langues sur 1 seul host.. je ne saisis pas ou est l'avantage dans ta solution.
 
1) tu proposes un choix de language au visiteur, store les règlages dans un cookie..Si le client n'accepte pas les cookies, le règlage est stocké dans la variable de session pour la durée de la visite de toute façon... ou mieux, utiliser la langue par défaut du navigateur par exemple.
2) une instance de classe "language" en PHP par exemple est créée a chaque page et prend en charge la traduction de chaque text_ID[n] par exemple en fonction de la valeur storée dans le cookie.. text_ID[n] représentant une array de messages stockés, pourquoi pas, soit dans la définition de classe elle-même, soit dans une base mysql, et utilisables pour le contenu des pages..On appelle chaque text_ID depuis les pages en fonction des messages à afficher, titres, liens etc... enfin bon l'explication pourrait sûrement être plus claire mais tu vois ce que je veux dire.
 
Je ne comprend absolument pas la lourdeur d'avoir à utiliser deux virtual hosts pour çà, c'est multiplier par deux la galère de mises à jours, de maintenance, etc...  :??:


Message édité par jackyl le 11-01-2005 à 22:42:14
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed