Правило HTaccess для очистки запросов REST API - PullRequest
6 голосов
/ 21 октября 2011

У меня есть сервер API, над которым я работаю, в настоящее время он принимает запросы через переменные $ _GET, как показано ниже

http://localhost/request.php?method=get&action=query_users&id=1138ab9bce298fe35553827792794394&time=1319225314&signature=d2325dedc41bd3bb7dc3f7c4fd6f081d95af1000

Мне нужна помощь в создании правила HTaccess, которое может читать URL-адреса, заменяющие '&' на'/', а также '=' и '?'с помощью '/' для создания чистого URL-адреса, например

http://localhost/request/method/get/action/query_users/id/1138ab9bce298fe35553827792794394/time/1319225314/signature/d2325dedc41bd3bb7dc3f7c4fd6f081d95af1000

Есть ли способ сделать это, сохранив параметры get для работы API?

Также это не такединственный запрос - это разные запросы.

Stackoverflow - это всегда место, куда можно обратиться за советом к специалисту, поэтому заранее спасибо

1 Ответ

21 голосов
/ 21 октября 2011

Это мой стандартный ответ на этот вопрос, но почему вы пытаетесь сделать это с .htaccess правилами , когда вы можете просто сделать это в request.php, и это будет гораздо более легко обслуживаемо . Просто проанализируйте значение $_SERVER['REQUEST_URI'] в вашем php-скрипте.

//not really tested, treat as pseudocode
//doesn't remove the base url
$params = array();
$parts = explode('/', $_SERVER['REQUEST_URI']);
//skip through the segments by 2
for($i = 0; $i < count($parts); $i = $i + 2){
  //first segment is the param name, second is the value 
  $params[$parts[$i]] = $parts[$i+1];
}

//and make it work with your exsisting code
$_GET = $params;

Имея это, вы сможете запросить:

http://example.com/request.php/method/get/action/query_users/id/1138ab9bce298fe35553827792794394/time/1319225314/signature/d2325dedc41bd3bb7dc3f7c4fd6f081d95af1000

Или используйте это просто .htaccess:

RewriteRule ^request/ request.php

И запрос:

http://example.com/request/method/get/action/query_users/id/1138ab9bce298fe35553827792794394/time/1319225314/signature/d2325dedc41bd3bb7dc3f7c4fd6f081d95af1000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...