Настройка службы RESTful для Backbone.js с помощью apache и windows

Я пытаюсь настроить веб-службу RESTful на моем apache localhost, чтобы служить фоновым контентом для моего базового приложения. Я пытался:

  1. Настройка WebDAV, но получить следующие сообщения об ошибках в журналах

    [Thu Feb 23 21:46:17 2012] [error] [клиент 127.0.0.1] Невозможно установить новое содержимое для / clusters / 19. [403, # 0], referer: http: //ideas.localhost/ [Thu Feb 23 21:46:17 2012] [error] [клиент 127.0.0.1] Произошла ошибка при открытии ресурса. [500, # 0], референт: http: //ideas.localhost/

  2. Использование Backbone.emulateHTTP, которое вызывает 405 method not allowed error (что-то, я думаю, вызвано заголовком X-HTTP-Method-Override: PUT поскольку обычные запросы POST работают нормально

Я запускаю Apache 2.2.21 и PHP 5.3 в Windows 7, а ниже – файл .htaccess. Я также использую среду SLIM для обработки маршрутизации URL.

 RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] 

И настройка виртуального хоста

 <VirtualHost *:80> DocumentRoot "G:/sites/ideas" Dav On // I also had security setting set to Allow all as it's just my localhost ServerName ideas.localhost ErrorLog "logs/ideas.localhost-error.log" CustomLog "logs/ideas.localhost-access.log" combined SetEnv APPLICATION_ENV development </VirtualHost> 

Я изо всех сил пытаюсь заставить что-то работать целую вечность, поэтому любая помощь очень ценится.

Не могу поверить, что я решил проблему менее чем через час после открытия щедрости, но эй хо.

Проблема заключалась в том, что Slim не имеет встроенной способности обрабатывать заголовок X-HTTP-Method-Override используемый магистральной сетью, и сообщение об ошибке не очень описательно. Добавив следующее внизу базы данных request.php и используя режим emulateHTTP в Backbone, он исправил это

 protected function checkForHttpMethodOverride() { if ( isset($this->post[self::METHOD_OVERRIDE]) ) { $this->method = $this->post[self::METHOD_OVERRIDE]; unset($this->post[self::METHOD_OVERRIDE]); if ( $this->isPut() ) { $this->put = $this->post; } } else if(isset($this->headers['x-method-override'] )) { $this->method = $this->headers['x-method-override']; if ( $this->isPut() ) { $this->put = $this->post; } } } с protected function checkForHttpMethodOverride() { if ( isset($this->post[self::METHOD_OVERRIDE]) ) { $this->method = $this->post[self::METHOD_OVERRIDE]; unset($this->post[self::METHOD_OVERRIDE]); if ( $this->isPut() ) { $this->put = $this->post; } } else if(isset($this->headers['x-method-override'] )) { $this->method = $this->headers['x-method-override']; if ( $this->isPut() ) { $this->put = $this->post; } } } 

PS – Я создал запрос на растяжение для SLIM, чтобы включить это по умолчанию, поэтому, если вы считаете, что было бы неплохо включить это в структуру, оставьте комментарий там