学習目的で、symfony を使用しておもちゃのサイトを構築しています。
app_dev.phpを介して開発モードでサイトにアクセスすると、すべて正常に動作します。
また、本番モードでは、1 つの uri "/music" を除いてすべてが機能します。ここで、"/music/" へのリダイレクトが発生するため、奇妙な 404 エラーが発生します。
いくつかの調査の後、以下に説明するようにいくつかのことを試しました。しかし、私はいつも同じエラーが発生します。たぶん、誰でもこれを解決する方法を教えてくれます。
これがログエントリです。サーバーに送信されたときの「/music」ではなく、「/music/」に一致するルートを検索することに注意してください。
[2013-10-23 21:01:37] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: ""GET /music/" のルートが見つかりません" at /var/www/symfony/runamusic .de/app/cache/prod/classes.php 1883 行目 {"exception":"[object] (Symfony\Component\HttpKernel\Exception\NotFoundHttpException: No route found for \"GET /music/\" at /var/) www/symfony/runamusic.de/app/cache/prod/classes.php:1883、Symfony\Component\Routing\Exception\ResourceNotFoundException: /var/www/symfony/runamusic.de/app/cache/prod/appProdUrlMatcher で。 php:197)"} []
app/cache/prod へのアクセス許可を確認しましたが、問題ないようです
「app/cache/prod」を手動で削除して実行することで、キャッシュをクリアしましたphp app/console cache:clear --env=prod --no-debug
また、実行php app/console router:match /music
すると正しいルートが得られます
ludviki@ludviki-MacBook:/var/www/symfony/runamusic.de$ php app/console router:match /music
Route "runamusic_music_album_index" matches
[router] Route "runamusic_music_album_index"
Name runamusic_music_album_index
Path /music
Host ANY
Scheme ANY
Method ANY
Class Symfony\Component\Routing\Route
Defaults _controller: Runamusic\MusicBundle\Controller\AlbumController::indexAction
Requirements NO CUSTOM
Options compiler_class: Symfony\Component\Routing\RouteCompiler
Path-Regex #^/music$#s
「app/config/routing.yml」にルートをインポートすると、プレフィックスは追加されません (プレフィックスに関するリダイレクトの問題について読みました)
...
runamusic_home:
resource: "@RunamusicHomeBundle/Resources/config/routing.yml"
prefix: /
runamusic_music:
resource: "@RunamusicMusicBundle/Resources/config/routing.yml"
prefix: /
runamusic_show:
resource: "@RunamusicShowBundle/Resources/config/routing.yml"
prefix: /
...
「Bundle/.../config/routing.yml」のルート定義は次のとおりです。
runamusic_music_album_index:
pattern: /music
defaults: { _controller: RunamusicMusicBundle:Album:index }
runamusic_music_album_show:
pattern: /music/album/{title}
defaults: { _controller: RunamusicMusicBundle:Album:show }
...
パターンの名前を/musicから/musicaなどに変更すると機能しますが、ここではリダイレクトしません。
別のバンドルのパターンを/musicに再定義すると、 /music/への同じ不要なリダイレクトが発生します。
また、試した存在しないルートはすべてリダイレクトされます ( /Musicから/Music/へのリダイレクトはありません)
このルートのパターンを変更することで解決できる可能性があることは承知しています。しかし、将来これを避けるために、ここで何がうまくいかないのかを理解したいと思います。
多分 .htaccess の書き換えエラー?
ご協力いただきありがとうございます。
編集 3: 以前の追加を削除