Silex 404 / htaccess - app / src / www结构

时间:2015-10-25 18:06:45

标签: php apache .htaccess mod-rewrite silex

以下是我想要的网址:http://localhost/project/api/,错误是:

  

抱歉,找不到您要查找的页面。

我的结构,我在api et api / www:

中有2个htaccess
- 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 /但它也没有用。

当网址为http://localhost/justwrite/api/www/时,我会得到我的'#hello world&#39;

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

<?php
require_once __DIR__.'/../../vendor/autoload.php';

$app = new Silex\Application();
echo 'test';
$app->get('/', function () {
    return 'Hello ';
});

$app->run();

奇怪的是&#34;测试&#34;显示网址http://localhost/project/api/

编辑2:如果我提出:

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

&#39;欢迎&#39;显示可能有一个参数,我可以在Silex中设置这个语法:$app->get('/', ...)

1 个答案:

答案 0 :(得分:0)

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

# silex rewrite rule
DirectoryIndex /app.php
FallbackResource /app.php

用silex php文件替换app.php。