1

ドキュメントに従って、Silex では、コード内で使用するために URL 経由で「スラッグ」を渡すことができます。

次の例が機能します。

$app = new Silex\Application();

$app->get('/', function () {
    return 'HAI';
});

ただし、次の例では 404 Not Found が返されます。

$app = new Silex\Application();

$app->get('/{slug}', function ($slug) {
    return 'HAI' . $slug;
});

この 404 を修正するにはどうすればよいですか?

関連性がある場合は、ここに私の Apache Vhost を示します。

<VirtualHost 127.0.0.1:80>
    DocumentRoot "/var/www/Silex/web"
    DirectoryIndex index.php

    <Directory "/var/www/Silex/web">
        AllowOverride All
        Allow from All
    </Directory>
</VirtualHost>

...そして私のディレクトリ構造:

/src
  |-- bootstrap.php
/tests
/vendor
/web
  |-- index.php
4

1 に答える 1

3

これは Apache の問題であることがわかりました。.htaccess ファイルまたはvhostのいずれかを使用できると想定されていました。実際には両方を使用する必要があります。

.htaccess:

FallbackResource /index.php

注: Apache 2.2.16 以降を使用している場合は、FallbackResource のみを使用できます。

仮想ホスト

<VirtualHost 127.0.0.1:80>
    DocumentRoot "/var/www/Silex/web"
    DirectoryIndex index.php

    <Directory "/var/www/Silex/web">
        AllowOverride All
        Allow from All
    </Directory>
</VirtualHost>

別の方法は、.htaccessファイルの内容 (FallbackResourceディレクティブ) を vhost 自体に配置し、htaccess を削除することです。

.htaccess を追加するとすぐに、2 番目の例のスラッグが機能しました。

于 2013-07-26T16:01:05.260 に答える