我想在不学习PHP框架的情况下使用PHP快速设置RESTful站点。我想在Apache中使用单个.htaccess
- 文件或使用Nginx使用单个规则,因此我可以在不更改代码的情况下更改Web服务器。
所以我想将所有请求都指向一个PHP文件,该文件负责RESTful处理并调用正确的PHP文件。
例如:
rest.php
rest.php
调用test.php
(可能带有查询字符串)。如果可以这样做,是否有免费的PHP脚本,其作用类似于我的rest.php
?或我该如何使用这个PHP脚本?
答案 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;
}
}
?>