2015-08-05 4 views
2

У меня есть проект с двумя приложениями: интерфейс (в AngularJs) и бэкэнд (в Phalcon). Я мой корень сервера документов у меня есть две папки и один HTAccess:Htaccess mod rewrite не работает

public_html 
- api 
    - controllers 
    - index.php 
- app 
- .htaccess 

.htaccess, имеют следующую конфигурацию:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^api/(.*)$ api/index.php?_url=/$1 [QSA,L] 
</IfModule> 

RewriteCond %{HTTP:Authorization} ^(.*) 
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] 

Так что, когда я отправить запрос POST (например) http://mydomain/api/sessions, результат 404 не найден. Конфигурация маршрутизатора:

$router->addPost('/sessions', array(
    'controller' => 'sessions', 
    'action' => 'post' 
)); 

В моем локальном хосте отлично работает с этой конфигурацией. Но, в моем VPS нет. Любые идеи?

Обновление 1:

Если я не использовать какую-либо услугу REST, доступ через http://mydomain/api контроллер индекс Phalcon загружен.

Update 2:

Если я пытаюсь получить доступ к службе REST, используя Phalcon URL как http://mydomain/api/index.php?_url=/licenses работает отлично.

ответ

2

я нашел проблему. файл конфигурации виртуального хоста не имел следующие строки:

<Directory "/var/www/domain/public_html"> 
    Options All 
    AllowOverride All 
    Allow from all 
</Directory> 
+0

А, так что файл .htaccess не обрабатывался вообще? Таким образом, запрос 'http: // mydomain/api/sessions' непосредственно в браузере также привел бы к 404, я предполагаю. Запрос на 'http: // mydomain/api' в любом случае не соответствовал бы« RewriteRule », поэтому он просто загрузил« http: // mydomain/api/index.php »(на Apache с соответствующими параметрами). – MrWhite

1

иногда можно обойтись относительно замен пути в корне документа, однако, вы должны сделать RewriteRule замены относительно корня (начинается с косой чертой), или указать RewriteBase / директивы после включения перезаписи двигателя для того, чтобы явно укажите префикс URL. ?

RewriteRule^апи /(.*)$ апи/index.php _url =/$ 1 [QSA, L]

становится:

RewriteRule ^api/(.*)$ /api/index.php?_url=/$1 [QSA,L] 
+0

Спасибо за ответ, но не работает – ramiromd

+0

Что делать, если вы делаете запрос GET в браузере? – MrWhite

+0

Я обновил вопрос. – ramiromd