Laravelをドキュメントルート直下に置いて公開する.htaccess

Laravelフレームワークは通常は /public ディレクトリをドキュメントルートに設定することで公開することが推奨されています。

その理由としてはプロジェクトルートからアプリケーションを提供すると、多くの機密設定ファイルが公共のインターネットに公開されるためです。

一般的にはapacheの設定ファイルを変更することでドキュメントルートを /public ディレクトリに指定するか、シンボリックリンクで同様の状況を作り出す方法が考えられます。

ただし、共有サーバー(レンタルサーバー)などftpでしかファイル送信する選択肢がない場合は、今回紹介する .htaccess を使用することで解決できます。

ディレクトリ構成としては以下になります。public_html がドキュメントルートになっています。

└── public_html/ (ドキュメントルート) (Laravelプロジェクトの全ファイルを設置)
    ├── .htaccess
    └── public/

htaccess はこちらです

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{REQUEST_URI} !/public
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

<FilesMatch "^\.">
    Require all denied
    Satisfy All
</FilesMatch>

これで全てのアクセスが /public 配下にリライトされるようになります。

注意点としては

https://<ドメイン>/public/*

でトップページ等の全てのページが表示されるようになります。public配下にもリライト設定をしてしまうと無限ループが発生してしまうのでこれは許容する必要があります。

このデメリットも理解してLaravelをドキュメントルート直下で公開していきましょう。

投稿者


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA