Tester un aliasmatch / expression rationnelle

Tester un aliasmatch / expression rationnelle - PHP - Programmation

Marsh Posté le 10-11-2008 à 23:23:41    

Hello,
 
c'est plutôt un sujet type Apache, mais je ne sais où le mettre (à part DMC)  et s'il y a une meilleure catégorie, veuillez m'excuser de ne pas l'avoir vue.
 
J'administre un serveur de jeu auquel des clients, disposant de leur copie du jeu, se connectent. Lorsqu'il manque un fichier sur le client, le client a la possibilité (c'est fait de manière automatique et sans intervention humaine par son jeu) de le récupérer sur le serveur.
Pour cela, le serveur dispose en plus du jeu "principal" d'un serveur Apache (sous WAMP, sur la même machine), il envoie aux clients l'URL d'apache pour venir piocher chez lui les fichiers qui leur manquent.
 
Le jeu tourne avec un système de type "Unreal" c.à.d. un dossier System, un dossier Maps, un dossier StaticMeshes, etc. pour les différents types de fichiers.
 
En gros, je crée un alias nommé "jeu" par exemple. Je le fais pointer sur d: /mondossier_jeu/ et lorsque depuis un PC du LAN j'accède à l'URL http://ip_du_serveur/jeu/ je tombe bien sur tous les fichiers.
 
Seulement pour récupérer une carte par exemple (sous dossier maps) le jeu télécharge depuis cette URL : http: //ip_du_serveur/jeu/fichier_map.extension
 
Or en réalité, le fichier se trouve ici : d: /mondossier_jeu/Maps/fichier_map.extension
 
(en clair, ya un niveau de plus, le dossier Maps/)
 
J'ai créé qq alias mais malgré toutes mes syntaxes, ça ne passe pas ...
 
Voici le fichier de l'alias tel qu'il est actuellement :

Code :
  1. Alias /jeu/ "d: /mondossier_jeu/"
  2. AliasMatch ^/jeu/(.*).ut2 "Maps/$1.ut2"
  3. AliasMatch ^/jeu/(.*).ogg "Music/$1.ogg"
  4. AliasMatch ^/jeu/(.*).uax "Sounds/$1.uax"
  5. AliasMatch ^/jeu/(.*).utx "Textures/$1.utx"
  6. AliasMatch ^/jeu/(.*).usx "StaticMeshes/$1.usx"
  7. AliasMatch ^/jeu/(.*).u   "System_public/$1.u"
  8. <Directory "d:/server/mondossier_jeu/">
  9.     Options Indexes FollowSymLinks MultiViews
  10.     AllowOverride all
  11.         Order allow,deny
  12.     Allow from all
  13. </Directory>
  14. <Directory "d:/server/mondossier_jeu/System">
  15.     Options Indexes FollowSymLinks MultiViews
  16.     AllowOverride all
  17.         Order allow,deny
  18.     Allow from localhost
  19. </Directory>


 
le problème, c'est que si je tape http: //ip_du_serveur/jeu/fichier_map.ut2 ça ne marche pas ... (ut2 est l'extension). Or ça devrait implicitement me mettre dans Maps/
En revanche, si je tape : http: //ip_du_serveur/jeu/Maps/fichier_map.ut2, ça marche ... (mais je ne peux pas modifier l'URL dans le jeu, cf. plus bas)
 
Ce que j'ai essayé :
AliasMatch ^/jeu/(.+).ut2 "Maps/$1.ut2"
AliasMatch ^/jeu/(.*).ut2$ "Maps/$1.ut2"
AliasMatch ^/(.*).ut2 "Maps/$1.ut2"
AliasMatch ^(.*).ut2 "Maps/$1.ut2"
AliasMatch ^/jeu/(.*)\.ut2 "Maps/$1.ut2"
AliasMatch ^/jeu/(.*)\.ut2$ "Maps/$1.ut2"
 
Rien ne marche ... Avec certaines écritures, WAMP ne se lance plus. Si quelqu'un a une idée supplémentaire, je suis preneur ... Sur le forum de WAMP, ya rien.
 
 
EDIT : ne pouvant pas modifier le jeu, je ne peux pas modifier l'URL de téléchargement ... Chaque client reçoit du serveur maître à la connexion l'URL pour les fichiers manquants : http: //ip_du_serveur/jeu/ et c'est tout ... Les alias match ne sont là que pour "trier par extension" les fichiers téléchargés.


Message édité par NewsletTux le 10-11-2008 à 23:41:05

---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 10-11-2008 à 23:23:41   

Reply

Marsh Posté le 11-11-2008 à 00:51:26    

Essayez avec ModRewrite
 

RewriteEngine on
RewriteBase   /
 
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]
 
RewriteRule  ^/?jeu/(.*)\.ut2$ /Maps/$1.ut2 [L]
# etc


 
 
L'information à error.log et acces.log peut être aussi utile dans le réglage :)


Message édité par CAJAX le 11-11-2008 à 00:56:12
Reply

Marsh Posté le 11-11-2008 à 01:21:07    

Hello,
J'ai essayé, mais dans le access.log, il me dit qu'il y a une histoire de redirection en boucle et ça marche pas ...
 
Si je fais ce que t'as dit, il me redirige vers d:\wamp\www\ (alors que c'est pas là qu'est mon alias) et si je mets en plus /jeu/ dans l'URL redirigée, j'ai l'erreur ci-dessus.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 11-11-2008 à 11:58:23    

^(?:.*)/jeu/(.*)\.ut2$


ca devrait marcher


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 11-11-2008 à 12:26:56    

Hello,
merci de ta réponse, mais niet ...
 
voici l'erreur que j'ai :
 
Apache - access.log

Citation :


172.16.1.104 - - [11/Nov/2008:11:21:33 +0100] "GET /jeu/fichier.ut2 HTTP/1.1" 404 229


 
Apache - error.log

Citation :


[Tue Nov 11 11:21:33 2008] [error] [client 172.16.1.104] File does not exist: d: /mondossier_jeu/fichier.ut2


 
EDIT : si, manuellement, j'entre dans un navigateur d: /mondossier_jeu/Maps/fichier.ut2 ça marche bien ... comme quoi le fichier est bien présent.


Message édité par NewsletTux le 11-11-2008 à 12:28:15

---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 11-11-2008 à 12:44:15    

172.16.1.104 - - [11/Nov/2008:11:21:33 +0100] "GET /jeu/fichier.ut2 HTTP/1.1" 404 229

 

il a pas demandé Maps ? zarb
tu reussis a chopper des fichiers dans ton dossier jeu?

 

edit:
dans ta réécriture essaie quand meme "jeu/Maps/$1.ut2" on sait jamais :D


Message édité par mIRROR le 11-11-2008 à 12:45:59

---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 11-11-2008 à 13:56:41    

Je suis sous Apache 2.2.8., logiquement il gère les aliasmatch.
 
Oui, je suis bien de ton avis, c'est étonnant qu'il n'y ait pas de trace du dossier "Maps", ou alors j'ai écrit ça n'importe comment ...


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Sujets relatifs:

Leave a Replay

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