如何在没有框架的情况下使用PHP快速设置RESTful站点?

时间:2010-04-10 12:18:27

标签: php rest redirect

我想在不学习PHP框架的情况下使用PHP快速设置RESTful站点。我想在Apache中使用单个.htaccess - 文件或使用Nginx使用单个规则,因此我可以在不更改代码的情况下更改Web服务器。

所以我想将所有请求都指向一个PHP文件,该文件负责RESTful处理并调用正确的PHP文件。

例如:

  1. 用户请求http://mysite.com/test
  2. 服务器将所有请求发送到rest.php
  3. rest.php调用test.php(可能带有查询字符串)。
  4. 如果可以这样做,是否有免费的PHP脚本,其作用类似于我的rest.php我该如何使用这个PHP脚本?

3 个答案:

答案 0 :(得分:2)

使用Apache Mod Rewrite:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^test$ rest.php [nc]

答案 1 :(得分:0)

是的,为名为404 Redirect的网页设置rest.php。使用$url = $_SERVER['REQUEST_URI'];检查网址。在rest.php中,您可以重定向到您想要的任何位置。

这只需要一条规则(404文件中的.htaccess)。

你必须要小心,并确保如果请求的页面(例如mysite.com/test1没有test1.php)错误的404,你不会陷入循环。

答案 2 :(得分:0)

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;
    }
  }
  ?>