Silex 404 / htaccess - app/src/www structure


Silex 404 / htaccess - app/src/www structure

这是我想要的URL: http://localhost/project/api/,错误是:

对不起,找不到您要找的网页。

我的结构,我有两个htaccess在api et api/www:

- project
-- api
--- app
--- src
--- www

项目/api/:

<IfModule mod_rewrite.c>
# project/api/.htaccess
RewriteEngine On
RewriteBase /project/api/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ www/$1 [QSA,L]
</IfModule>

项目/api/www htaccess:

<IfModule mod_rewrite.c>
# project/api/www/.htaccess
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ app.php [L]
</IfModule>

对于RewriteBase,我试图附加/project/api/www/,但它也不起作用。

当URL是http://localhost/justwrite/api/www/时,我得到我的'hello world'

编辑:

这是我的项目/api/www/app.php:

<?php
require_once __DIR__.'/../../vendor/autoload.php';
$app = new Silex'Application();
echo 'test';
$app->get('/', function () {
    return 'Hello ';
});
$app->run();

奇怪的是"test"和URL http://localhost/project/api/一起出现。

EDIT 2:如果我输入:

$app->get('project/api/', function () {
    return new Response('Welcome');
});

"欢迎"显示也许有一个参数我可以设置在Silex有这个语法:$app->get('/', ...) ?

我发现重写规则很麻烦。他们最终工作,但不知何故,总是需要一些战斗。在这种情况下,有一个替代方案:FallbackResource。如果您的apache版本是2.2.16或更高版本,您可以用下面的代码替换重写规则。将此添加到两个.htaccess文件中(每个文件夹中一个):

# silex rewrite rule
DirectoryIndex /app.php
FallbackResource /app.php
将app.php替换为silex php文件。