3

刚开始使用 Silex 并遇到一些问题。

下载fat zip 文件,解压到wamp'swww文件夹。所以,这里是C:\wamp\www\fat-silex\web\index.php

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

问题是我得到了 Apache 的 404http://localhost/fat-silex/web/hello以及除 之外的任何 URL localhost/fat-silex/web,我得到 Silex'es 404(如预期的那样)。我猜这些请求直接发送到 Apache,而不是由 Silex 路由。看起来这个问题可以用一个.htaccess文件来解决,所以我添加了这个,在官方文档中建议:

<IfModule mod_rewrite.c>
    Options -MultiViews

    RewriteEngine On
    RewriteBase /fat-silex
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

但是,它似乎根本没有任何效果。

4

2 回答 2

5

你的重写基础应该是/fat-silex/web

<IfModule mod_rewrite.c>
    Options -MultiViews

    RewriteEngine On
    RewriteBase /fat-silex/web
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

我已经在我的本地主机上测试过它,它工作正常

于 2013-03-19T13:27:39.347 回答
1

问题是你的apache conf。如果您不使用虚拟主机,您应该配置 apache 以允许您的项目目录的 htaccess 文件。在 Linux (Ubuntu) 上:sudo vi /etc/apache2/sites-available/default

<Directory /var/www/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  ...
</Directory>
<Directory /var/www/fat-silex/>
  AllowOverride All
</Directory>
于 2013-07-23T06:20:03.740 回答