2010-05-15 6 views
1

J'ai changé la façon dont mon URL fonctionne sur mon serveur. Il est maintenant www.myserver.com/service au lieu de www.myserver.com/test/serviceURL de réécriture pour la requête PUT

J'ai ajouté un RedirectMatch 301 à mon dossier Apache pour rediriger conf tout accès à www.myserver.com/test à www.myserver.com/.

Je fichier reçois à ce serveur via un PUT HTTP à l'adresse par exemple: www.myserver.com/test/service/put/myfile.xml

Le serveur d'envoyer le fichier ne gère pas le code d'état 301 HTTP afin que les fichiers ne sont arrivés plus.

Existe-t-il un moyen de réécrire l'URL lorsqu'il s'agit d'une demande PUT afin de ne manquer aucun fichier?

Merci,

Benjamin


MISE À JOUR:

Voici le contenu RewriteLog après avoir appliqué ceci:

RewriteEngine on 
RewriteCond %{REQUEST_METHOD} =PUT 
RewriteRule ^/test/(.*) /$1 [PT] 

journal:

XX.XXX.XXX.XXX - - [16/May/2010:06:33:40 +0000] [www.myserver.com/sid#7f378508aa30][rid#7f378538a828/initial] (2) init rewrite engine with requested uri /test/service/put/myfile.xml 
XX.XXX.XXX.XXX - - [16/May/2010:06:33:40 +0000] [www.myserver.com/sid#7f378508aa30][rid#7f378538a828/initial] (3) applying pattern '^/test/(.*)' to uri '/test/service/put/myfile.xml' 
XX.XXX.XXX.XXX - - [16/May/2010:06:33:40 +0000] [www.myserver.com/sid#7f378508aa30][rid#7f378538a828/initial] (4) RewriteCond: input='PUT' pattern='=PUT' => matched 
XX.XXX.XXX.XXX - - [16/May/2010:06:33:40 +0000] [www.myserver.com/sid#7f378508aa30][rid#7f378538a828/initial] (2) rewrite '/test/service/put/myfile.xml' -> '/service/put/myfile.xml' 
XX.XXX.XXX.XXX - - [16/May/2010:06:33:40 +0000] [www.myserver.com/sid#7f378508aa30][rid#7f378538a828/initial] (2) forcing '/service/put/myfile.xml' to get passed through to next API URI-to-filename handler 
XX.XXX.XXX.XXX - - [16/May/2010:06:33:40 +0000] [www.myserver.com/sid#7f378508aa30][rid#7f3785393858/subreq] (2) init rewrite engine with requested uri /service/put/myfile.xml 
XX.XXX.XXX.XXX - - [16/May/2010:06:33:40 +0000] [www.myserver.com/sid#7f378508aa30][rid#7f3785393858/subreq] (3) applying pattern '^/test/(.*)' to uri '/service/put/myfile.xml' 
XX.XXX.XXX.XXX - - [16/May/2010:06:33:40 +0000] [www.myserver.com/sid#7f378508aa30][rid#7f3785393858/subreq] (1) pass through /service/put/myfile.xml 

MISE À JOUR 2:

configuration Apache:

RewriteEngine on 
RewriteLog "/etc/httpd/logs/rewrite.log" 
RewriteLogLevel 9 
RewriteCond %{REQUEST_METHOD} =PUT 
RewriteRule ^/test/(.*) /$1 [PT] 
RedirectMatch 301 ^/test/(.*)$ http://www.myserver.com/$1 
AliasMatch ^/style/(.*)?$ "/var/www/test/www/style/$1" 
AliasMatch ^/js/(.*)?$ "/var/www/test/www/js/$1" 
AliasMatch ^/min/(.*)?$ "/var/www/test/www/min/$1" 
AliasMatch ^/downloads/(.*)?$ "/var/www/test/www/downloads/$1" 
AliasMatch ^/images/(.*)?$ "/var/www/test/www/images/$1" 
AliasMatch ^/chart/(.*)?$ "/var/www/test/www/graphs/$1" 
AliasMatch ^(/.*)?$ "/var/www/test/www/index.php$1" 

<Directory "/var/www/test"> 
    AllowOverride None 
    Allow from all 
</Directory> 

Répondre

2

Il est, avec mod_rewrite:

RewriteEngine on 
RewriteCond %{REQUEST_METHOD} =PUT 
RewriteRule ^/test/(.*) /$1 
+0

mod_rewrite n'émettra pas 302 ou 301 redirect? – benjisail

+0

Non, à moins que vous le disiez (ou que vous donniez une URL complète). – Artefacto

+0

Avec cette règle mod_rewrite Je reçois un statut d'erreur 405 HTTP disant: « La méthode demandée PUT n'est pas autorisé pour l'URL /test/service/put/myfile.xml » lorsque je tente d'envoyer une demande de mise à mon serveur au lieu du statut HTTP 301. Comment puis-je vérifier que la réécriture est effectuée correctement? Après la RewriteRule, je fais AliasMatch. Vont-ils encore fonctionner si la réécriture arrive? Merci! – benjisail