Как я могу быстро настроить RESTful-сайт, используя PHP без Framework? - PullRequest
1 голос
/ 10 апреля 2010

Я хотел бы быстро настроить сайт RESTful с использованием PHP, не изучая PHP Framework. Я хотел бы использовать один .htaccess -файл в Apache или одно правило с использованием Nginx, чтобы я мог легко менять веб-сервер без изменения своего кода.

Итак, я хочу направить все запросы в один PHP-файл, и этот файл заботится о RESTful-обработке и вызывает правильный PHP-файл.

Например:

  1. Пользовательский запрос http://mysite.com/test
  2. Сервер отправляет все запросы на rest.php
  3. Вызов rest.php test.php (возможно, со строкой запроса).

Если это можно сделать, есть ли бесплатный PHP-скрипт, который работает как мой rest.php? или , как я могу сделать этот PHP-скрипт?

Ответы [ 3 ]

2 голосов
/ 10 апреля 2010

Использование Apache Mod Rewrite:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^test$ rest.php [nc]
0 голосов
/ 10 апреля 2010

Изменено немного по сравнению с тем, как это делает Drupal . Это перенаправляет все в rest.php и помещает исходный запрошенный URL-адрес в $ _GET ['q'], чтобы вы предприняли соответствующее действие. Вы можете поместить это в конфигурацию apache или в свой .htaccess. Убедитесь, что mod_rewrite включен.

RewriteEngine on
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ rest.php?q=$1 [L,QSA]

Если все, что вам нужно, это включить запрошенный файл, вы можете сделать что-то вроде этого

<?php
  if (!empty($_GET['q'])) {
    $source = $_GET['q'] . '.php';
    if (is_file($source)) {
      include $source;
    } else {
      echo "Source missing.";
    }
  }
?>

Вы действительно не хотите этого делать, однако; например, если кто-то запросит «/../../../etc/passwd», вы можете в конечном итоге подать то, что вам не нужно.

Мне кажется, что-то более безопасное.

 <?php
  if (!empty($_GET['q'])) {
    $request = $_GET['q'];
    switch ($request) {
      case 'test1':
        include 'test1.php';
        break;
      default:
        echo 'Unrecognised request.';
        break;
    }
  }
  ?>
0 голосов
/ 10 апреля 2010

Да, создайте 404 Redirect для страницы с именем rest.php. Используйте $url = $_SERVER['REQUEST_URI'];, чтобы изучить URL. В rest.php вы можете перенаправить туда, куда хотите.

Для этого требуется только одно правило (404 в вашем .htaccess файле).

Вы должны быть осторожны и убедиться, что если запрошенная страница (например, mysite.com/test1 не имеет test1.php) выдает ошибку с 404, вы не попадете в цикл.

...