这是我想要的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