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をドキュメントルート直下で公開していきましょう。
コメントを残す