Intereting Posts
php require_once или включить внутри HTML head tag не помещает код внутри головы, а в тело как я могу исключить файлы без папок из этой функции readdir? Передача значения GET из формы HTML в Twitter API 1.1 PHP MySQL: mysql_fetch_assoc (): предоставленный аргумент не является допустимым ресурсом результата MySQL Как экспортировать определенный столбец в MySQL с помощью phpmyadmin? заменяя пробелы только одним «_», Добавить как отдельные элементы корзины для продукта с пользовательскими данными в Woocommerce электронные письма покупателей woocommerce на frontend Android: загрузка файла с заполнением POST-органа вместе PDO :: PARAM для дат? Форма отправляет с AJAX, передавая данные формы в PHP без обновления страницы jsonb-экзистенциальные операторы с параметризованными запросами zip и загружать файлы, используя php Идентификатор сеанса PHP изменяется между страницами PHP preg_split с двумя разделителями и захват только одного

mod_rewrite для REST API на PHP

Я хочу, чтобы каждый звонок с

http://localhost/api/ 

(как корневая папка ), например, http://localhost/api/get/users самом деле есть http://localhost/api/index.php?handler=get/users .

http://localhost/api/get/user/87 должен быть http://localhost/api/index.php?handler=get/user/87 где в index.php я бы поймал обработчик переменной $ _GET и обработал его в надлежащим образом.

Если у меня есть такие правила перезаписи, он работает только для одного

 RewriteRule ^([^/\.]+)/?$ index.php?handler=$1 [QSA,L] 

два

 RewriteRule ^([^/\.]+)/?$ index.php?handler=$1 [QSA,L] RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?handler=$1&handler2=$2 [QSA,L] 

три слэша и так далее …

 RewriteRule ^([^/\.]+)/?$ index.php?handler=$1 [QSA,L] RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?handler=$1&handler2=$2 [QSA,L] RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?handler=$1&handler2=$2&handler3=$3 [QSA,L] 

Поэтому для первого случая будет работать http://localhost/api/a , но http://localhost/api/a/b вызовет ошибку Not Found .

EDIT : Это должно быть хорошо?

 RewriteRule ^(.*)$ index.php?handler=$1 [L,QSA] 

Ваш (собственный) ответ должен быть хорошим, просто имейте в виду, что он перенаправит все входящие URL-адреса на index.php . Т.е. если у вас есть статические файлы, например /js/jquery.js то он будет изменен на index.php?handler=/js/jquery.js .

Если вы хотите избежать проблем, попробуйте что-то вроде:

 RewriteCond %{REQUEST_URI} !(.*)\.(css|js|htc|pdf|jpg|jpeg|gif|png|ico)$ [NC] RewriteRule ^(.*)$ index.php?handler=$1 [QSA,L] 

Два намека:

Попробуйте использовать директиву RewriteLog : она поможет вам RewriteLog такие проблемы:

 # Trace: # (!) file gets big quickly, remove in prod environments: RewriteLog "/web/logs/mywebsite.rewrite.log" RewriteLogLevel 9 RewriteEngine On 

Мой любимый инструмент для проверки regexp:

http://www.quanetic.com/Regex (не забудьте выбрать ereg (POSIX) вместо preg (PCRE)!)