У меня есть сервер 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 всегда является местом для получения экспертных советов, поэтому заранее спасибо
Это, как правило, мой стандартный ответ на этот вопрос, но почему вы пытаетесь сделать это с .htaccess
правил .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