symfonyのroutingとapacheの設定
symfony の apps/front/config/routing.yml の設定内容
# default rules homepage: url: / param: { module: default, action: index } default_action: url: /:action param: { module: default } default_index: url: /:module/ param: { action: index } default: url: /:module/:action/*
こんな感じで、/で終わった場合はmoduleにマッチさせるようにrouting.ymlを書いてみた。
で、問題は/で終わらないdefault_actionの方。apacheは同名のディレクトリが存在する場合、下記のようにリダイレクトを掛ける。
/foo -> /foo/
これをやられると、action名と同名のディレクトリを作成できなくなる。そこで、DirectorySlashをOffにして逃れるという手を使った
http://httpd.apache.org/docs/2.2/ja/mod/mod_dir.html#directoryslash
DirectorySlash Off
こうすれば、ディレクトリがあっても補完されなくなる。
セキュリティ警告
末尾のスラッシュでのリダイレクトをオフにすると、結果的に情報漏洩を 招くことになるかもしれません。 mod_autoindex が有効 (Options +Indexes) で、 DirectoryIndex が有効なリソース (例えば index.html) を指していて、また、要求のあった URL に特別な ハンドラが設定されていない場合を考えてみてください。 この場合末尾にスラッシュのついているリクエストに対しては index.html ファイルが返されます。しかしスラッシュのないリクエストに対しては、 ディレクトリの内容一覧を返してしまいます。
こういうのがあるそうなので
Options -Indexes
を忘れずに指定する