Apache 重写PUT请求的URL

Apache 重写PUT请求的URL,apache,http,mod-rewrite,put,Apache,Http,Mod Rewrite,Put,我更改了我的URL在服务器上的工作方式。 它现在是www.myserver.com/service,而不是www.myserver.com/test/service 我已将RedirectMatch 301添加到我的Apache conf文件中,以将对www.myserver.com/test的任何访问重定向到www.myserver.com/ 我通过放置在此URL上的HTTP将文件接收到此服务器,例如: www.myserver.com/test/service/put/myfile.xml

我更改了我的URL在服务器上的工作方式。 它现在是
www.myserver.com/service
,而不是
www.myserver.com/test/service

我已将RedirectMatch 301添加到我的Apache conf文件中,以将对
www.myserver.com/test
的任何访问重定向到
www.myserver.com/

我通过放置在此URL上的HTTP将文件接收到此服务器,例如:
www.myserver.com/test/service/put/myfile.xml

发送文件的服务器不处理301 HTTP状态代码,因此文件不再到达

当URL是PUT请求时,是否有方法重写URL以避免丢失任何文件

谢谢

本杰明


更新:

以下是应用此选项后的重写日志内容:

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


更新2:

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>
重新编写引擎打开
RewriteLog“/etc/httpd/logs/rewrite.log”
重写日志级别9
RewriteCond%{REQUEST_METHOD}=PUT
重写规则^/test/(.*)/$1[PT]
重定向匹配301^/test/(.*)$http://www.myserver.com/$1
别名匹配^/style/(.*)?$“/var/www/test/www/style/$1”
别名匹配^/js/(.*)?$“/var/www/test/www/js/$1”
别名匹配^/min/(.*)“$”/var/www/test/www/min/$1”
别名匹配^/downloads/(.*)“$”/var/www/test/www/downloads/$1”
别名匹配^/images/(.*)?$“/var/www/test/www/images/$1”
别名匹配^/chart/(.*)?$“/var/www/test/www/graphs/$1”
别名匹配^(/.*)“$”/var/www/test/www/index.php$1”
不允许超限
通融
有,包括:


mod_rewrite不会发出任何302或301重定向?不会,除非你告诉它(或者你给出一个完整的URL)。使用这个mod_rewrite规则,当我尝试向我的服务器发送PUT请求而不是301 HTTP状态时,我会得到一个405 HTTP错误状态,表示:“URL/test/service/PUT/myfile.xml不允许请求的方法PUT”。如何验证重写是否正确完成?在重写规则之后,我正在进行别名匹配。如果重写发生,它们还会工作吗?谢谢Tru将PT(passthru)标志添加到rewriterule:rewriterule^/test/(*)/$1[PT]这里是apache访问日志:XX.XXX.XXX.XXX-user[16/May/2010:06:12:25+0000]“PUT/test/service/PUT/myfile.xml HTTP/1.1“404 1759”-”
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>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} =PUT
RewriteRule ^/test/(.*) /$1