PHP 苗条 API 404 未找到
PHP Slim API 404 not found
我正在尝试使用 php 和 php slim 创建一个 API。
我的文件夹结构:
API:
- 应用 -> app.js
- libs -> Slim
- v1 -> .htaccess 和 index.php
htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L]
index.php
require '.././libs/Slim/Slim.php';
\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
$app = \Slim\Slim::getInstance();
$app->get('/orderoverview/:customerID', function ($customerID) {
echo "Hello " . $customerID;
});
$app->run();
这应该很容易,但每次我去 http://localhost/api/v1/orderoverview/2 我都会收到 404 页面未找到。
但是当我去 http://localhost/api/v1/index.php/orderoverview/2 时,我确实得到了我想要成为的结果!
有任何意见或解决方案吗?
您必须在您的根目录下创建 .htaccess
文件并放入下面的代码。
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /api/v1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php? [L,QSA]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC]
RewriteRule ^ %1 [R=301,L]
您需要将 RewriteBase 添加到您的 htaccess。我注意到您没有分组,所以我假设您将它放在 /api/v1
的子目录中
RewriteBase /localsites/serf/weap/api/v1
我为您创建了这个,只需将您的 .htaccess 文件更改为 -
DirectoryIndex /v1/index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L]
此处 v1 是子文件夹,index.php 是您的函数所在的位置。
希望对您有所帮助!
我正在尝试使用 php 和 php slim 创建一个 API。
我的文件夹结构:
API:
- 应用 -> app.js
- libs -> Slim
- v1 -> .htaccess 和 index.php
htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L]
index.php
require '.././libs/Slim/Slim.php';
\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
$app = \Slim\Slim::getInstance();
$app->get('/orderoverview/:customerID', function ($customerID) {
echo "Hello " . $customerID;
});
$app->run();
这应该很容易,但每次我去 http://localhost/api/v1/orderoverview/2 我都会收到 404 页面未找到。
但是当我去 http://localhost/api/v1/index.php/orderoverview/2 时,我确实得到了我想要成为的结果!
有任何意见或解决方案吗?
您必须在您的根目录下创建 .htaccess
文件并放入下面的代码。
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /api/v1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php? [L,QSA]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC]
RewriteRule ^ %1 [R=301,L]
您需要将 RewriteBase 添加到您的 htaccess。我注意到您没有分组,所以我假设您将它放在 /api/v1
的子目录中RewriteBase /localsites/serf/weap/api/v1
我为您创建了这个,只需将您的 .htaccess 文件更改为 -
DirectoryIndex /v1/index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L]
此处 v1 是子文件夹,index.php 是您的函数所在的位置。 希望对您有所帮助!