如何在没有框架的情况下使用PHP快速建立RESTful站点?
我想在不学习PHP框架的情况下使用PHP快速建立一个RESTful站点。我想在Apache中使用一个如何在没有框架的情况下使用PHP快速建立RESTful站点?,php,rest,redirect,Php,Rest,Redirect,我想在不学习PHP框架的情况下使用PHP快速建立一个RESTful站点。我想在Apache中使用一个.htaccess-文件,或者使用Nginx使用一个规则,因此我可以在不更改代码的情况下更改web服务器 因此,我希望将所有请求定向到一个PHP文件,该文件负责RESTful处理并调用正确的PHP文件 例如: 用户请求 服务器将所有请求发送到rest.php rest.php调用test.php(可能带有查询字符串) 如果可以做到这一点,是否有一个像myrest.PHP一样工作的免费PHP脚本?或
.htaccess
-文件,或者使用Nginx使用一个规则,因此我可以在不更改代码的情况下更改web服务器
因此,我希望将所有请求定向到一个PHP文件,该文件负责RESTful处理并调用正确的PHP文件
例如:
rest.php
rest.php
调用test.php
(可能带有查询字符串)如果可以做到这一点,是否有一个像my
rest.PHP
一样工作的免费PHP脚本?或者如何执行此PHP脚本?是的,将404重定向到名为rest.PHP
的页面。使用$url=$\u服务器['REQUEST\u URI']
检查url。在rest.php
中,您可以重定向到任何您想要的地方
这只需要一条规则(.htaccess
文件中的404
)
您必须小心,确保如果请求的页面(例如mysite.com/test1没有test1.php)出现404错误,您不会陷入循环。使用Apache Mod Rewrite:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^test$ rest.php [nc]
从操作方式上稍作修改。这会将所有内容重定向到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;
}
}
?>
但我希望我的所有页面都使用它。所以我想让mysite.com/test1进入我的test1.php文件。我想你不太明白。如果用户请求的文件不存在,它将陷入重定向循环。这就是为什么在重定向之前应该检查文件是否存在的原因。