重写HTTP动词

时间:2012-01-27 15:16:05

标签: apache mod-rewrite

我有一个由Javascript Web应用程序调用的REST API。 HTML / CSS和JS文件存储在本地并由Apache提供,并且Apache API在远程HTTP服务器上使用Apache的ProxyPass指令调用。 这是我的实际httpd.conf文件(开发机器在Windows上):

<VirtualHost *:80>
    ServerName myapp.com
    DocumentRoot C:\myapp

    <Directory />
        Allow from all
    </Directory>

    RewriteLog C:\Temp\rewrite.log
    RewriteLogLevel 0
    RewriteEngine On

    # Let apache serve static files
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f
    RewriteRule (.*) $1 [L]

    ProxyPass / http://192.168.0.23:4567/ retry=0
    ProxyPassReverse / http://192.168.0.23:4567/
    ProxyPreserveHost on
</VirtualHost>

我的问题是远程服务器(192.168.0.23)不支持DELETE和PUT请求(如果我尝试这样做,我会得到一个方法不允许错误)。 不幸的是我没有访问该服务器,但我可以开发它暴露的REST api。 我想做的是

  • 检查传入请求是DELETE还是PUT
  • 在请求上设置HTTP标头X-ORIGINAL-REQUEST_METHOD:DELETE
  • 将请求转发到远程服务器(192.168.0.23)作为POST

这可以通过Apache重写规则或其他模块以某种方式完成吗?

0 个答案:

没有答案