我已经在几个不同的服务器上成功地运行了 Slim 应用程序,并且今天尝试使用相同的结构在 AppFog 上设置一个,但它运行不正常。
我将从我的目录结构开始:
.htaccess
/public
.htaccess
index.php
/routes
/Slim
根.htaccess文件包含来自 AppFog 文档的 DocumentRoot 代码。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^brs.aws.af.cm$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.brs.aws.af.cm$
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]
/public目录是我的 api 代码所在的位置,目前是 Slim index.php和.htaccess文件。index.php文件包含两个简单的路由:
require '../Slim/Slim.php';
\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
// Default GET route
$app->get('/', function () {
echo "Default GET route";
});
// Hello World route
$app->get('/hello/:name', function ($name) {
echo "Hello, $name";
});
$app->run();
服务器设置在http://brs.aws.af.cm/并且我在下面列出了主要路线:
- / => 使用默认的 GET 路由
- /hello/john => 404 错误
- /public/hello/john => 有效,但在 url 中需要“/public”
这里有一些额外的奇怪之处。七个字符的路由导致 404 错误,六个或更少最终使用默认的 GET 路由。
- /123456 => 不应该工作,但使用默认的 GET 路由
- /1234567 => 404 错误
我完全被难住了。我认为它与 DocumentRoot 代码有关,但我不确定到底是什么。我也试过设置
RewriteBase /public/
在/public/.htaccess中,但它似乎没有任何影响。
任何帮助将不胜感激。谢谢!