PHP Rest API, перенаправляющий ПОЧТОВЫЙ маршрутизатор


Я пытаюсь написать простое спокойное php-приложение. Я пытаюсь написать один index.php маршрутизатор.

Файл .htaccess, который у меня сейчас есть, это

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule api/^(.*)$ api/index.php?_url=/$1 [QSA,L]
</IfModule>

Я добавил RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$, чтобы принудительно использовать косую черту, как показано здесь .

Вызов var_dump($_POST); или var_dump($_GET); по-прежнему возвращает пустой массив, значения POST по-прежнему удаляются. Отправка GET и POST оба возвращают GET при оценке: $_SERVER['REQUEST_METHOD'];.

Как мне это правильно реализовать? Кроме того, я не могу использовать библиотеку и должен реализовать свой собственный маршрутизатор.

Любая помощь или совет приветствуются.


РЕДАКТИРОВАТЬ:


Начал с нуля:

Url-адрес для запросов должен быть http://localhost/api/*

Текущий файл .htaccess, расположенный в папке api, выглядит следующим образом:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ controller.php?do=$1 [L,QSA]

Где controller.php сидит в /var/www/api

Файл Vhost в /etc/apache2/sites-available

Называется api.conf

И выглядит так это:

<VirtualHost *:*>
    ServerName test.example.com
    ServerAlias www.test.example.com
    DocumentRoot /var/www/api/
    <Directory "/var/www/api/">
        Allow from all
        AllowOverride all
        Options +Indexes
    </Directory>
</VirtualHost>

Все та же проблема:

The requested URL /api/something was not found on this server.
Author: Community, 2015-03-31

1 answers

Я решил эту проблему:

Apache перезаписал файл default.conf в папке "Доступные сайты", когда я выполнил обновление, которое я пропустил...

Мне нужно было добавить к 000-default.conf

<Directory /var/www/>
     AllowOverride All

Я обнаружил, что mod_rewrite теперь отключен:

in_array('mod_rewrite', apache_get_modules());
//or
var_dump(apache_get_modules());

Итак, для повторного включения:

a2enmod rewrite

service apache2 restart

Надеюсь, это поможет другим.

 0
Author: andrsnn, 2015-04-01 22:30:39