admin【CakePHP3】階層を持った静的ファイルにアクセスするとURLにwebrootが付与されてしまう現象の対処方法ツイートシェアはてブGoogle+PocketCakePHP3で静的コンテンツを置く場所は、通常であればweboot配下になるのですが、静的コンテンツにアクセスしようとした時にURL「weboot」が強制的に付与されることがあります。「/webroot/dir/index.html」にファイルを設置してURLでアクセスするとhttp://example.com/dir/index.htmlhttp://example.com/dir/どちらでも同じ静的ファイルを表示できます。最後のスラッシュが無い場合「http://example.com/dir」は、「http://example.com/webroot/dir/」とwebrootが付与された形でリダイレクトされてします。別に気にならなければそのままでも良いのですが、WordPressを設置したりしているとURLが変わってしまうため「404エラー」が表示されてしまいますし、SEO的にも同じページのURLが複数あるとよろしくないため、統一したほうが良いです。最後にApacheログで動作を確認する原因を探すために、Apacheログをチェックします。静的ファイルにアクセスしたログ生定期ファイルにアクセスした際のログになります。16一度アクセスされた後、301リダイレクトで「/cakephp3/webroot/test/」を表示しています。WordPressを設置した際の動作WordPressを静的コンテンツに配置して動作させていると、WordPressの場合は404エラーページになってしまいます。静的ファイルの場合は問題なくコンテンツは表示されますがURLが変わってしまいます。WordPressのような別のソフトウェアがあるとエラーなる可能性があります。いうわけで、今回は「.htaccess」を修正してwebrootが付与された場合は、強制的にwebrootを除いた状態のURLにリダイレクトさせる方法で問題が解決できます。今回修正する「.htaccess」ファイルは、「webroot」ディレクトリ配下にある「.htaccess」ファイルになります。デフォルトだと下記のようになっているかと思います。[L]</IfModule>これを下記のように修正します。[R=301,L,NE]</IfModule>黄色い部分を使いしています。CakePHP2の場合は、4行目のディレクトリチェック部分はデフォルトで記述されていたと思いますが、CakePHP3の場合は追記してあげる必要があります。上記を修正することでアクセスログは下記のようになります。16リダイレクト回数が1回から2回に変わり、最終のURLが目的のURLになっていることがわかると思います。スポンサーリンク最後にURLに「webroot」が付与されてしまう原因の対処方法を紹介しましたが、デメリットとしてリダイレクト回数が増えてしまいます。これがベストの対応方法かというとそうではありませんが、そもそもリダイレクトをせずにURLを記述してあげる必要があります。コメントをキャンセルメールアドレスが公開されることはありません。date*日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)CakePHP3とWordPressを使ってログインセッションを共有して会員サイトを作ってみた【CakePHP3】webroot配下のディレクトリやファイルを表示する方法RECOMMENDこちらの記事も人気です。