我的.htaccess:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /silex/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
的index.php:
<?php
ini_set('display_errors', 1);
require_once __DIR__.'../vendor/autoload.php';
$app = new Silex\Application();
$app->get('/hello/{name}', function ($name) use ($app) {
return 'Hello '.$app->escape($name);
});
$app->run();
访问localhost / silex / hello / world时出现此错误:
&#34;抱歉,找不到您要查找的页面。&#34;
为什么?
答案 0 :(得分:1)
在.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /silex/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?$1 [QSA,L]
</IfModule>
文件的位置应为:
/silex/.htaccess
/silex/web/index.php
答案 1 :(得分:1)
这是silex完整路径
/var/www/html/silex
&#34; htaccess的&#34;文件
/var/www/html/silex/.htaccess
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /silex/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
&#34;的index.php&#34;文件
/var/www/html/silex/web/index.php
require_once __DIR__.'/../vendor/autoload.php';
$app = new Silex\Application();
$app['debug'] = true;
$app->get('/', function () {
return 'Index Page';
});
$app->get('/hello', function () {
return 'Hello Page';
});
$app->run();
答案 2 :(得分:1)
.htaccess应该是
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /web/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
VirtualHost文件必须如下所示
<VirtualHost *:80>
ServerName site.com
ServerAlias www.site.com
DocumentRoot /var/www/html/silex/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
而且永恒的作品就像魅力一样! ; - )
“。htaccess”位于 / var / www / html / silex /
和Silex应用程序包
放在 / var / www / html / silex / web /
答案 3 :(得分:0)
您可以尝试添加:
RewriteCond %{REQUEST_FILENAME} !-d.
它对我有用。
答案 4 :(得分:0)
这可能有效:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /silex/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>