ドキュメントルートをpublicにしないでLaravelを動かす方法
通常、多くのWebフレームワークではpublicディレクトリをドキュメントルートにすることが求められます
Laravelも同様で、publicフォルダをドキュメントルートにする必要があります
ただし、多くのレンタルサーバの場合、簡単にドキュメントルートを変更できないので他の方法を考える必要があります
publicをつけないとアクセスできない
改めて問題点を整理します
|- html (サーバの公開フォルダ)
|- bootstrap
|- config
|- database
|- public ← ドキュメントルートにしたい
|- resources
|- routes
|- storage
|- tests
|- .htaccess
htmlはレンタルサーバが指定する公開フォルダ
このように公開フォルダに全てのLaravelファイルをアップロードしてしまうと、ウェブのトップページにアクセスするには
「https://hoge.com/public」
とアクセスしなくちゃいけないんです
今回紹介するのはドキュメントルートやファイル構成を変更することなく、これを、
「https://hoge.com」
というURLでアクセスできるようにする方法です
解決方法
|- html (サーバの公開フォルダ)
|- bootstrap
|- config
|- database
|- public
|- .htaccess ← これじゃない
|- resources
|- routes
|- storage
|- tests
|- .htaccess ← これ
ルートディレクトリに.htaccessという名前のファイルを作って、以下のコードをコピペします
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]
RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php
</IfModule>
publicディレクトリ配下にもデフォルトで.htaccessファイルが用意されてますが、これは編集しません
問題点
通常、レンタルサーバにファイルをアップロードすると、図のhtmlディレクトリ配下に設置されその中にあるファイルは全て公開フォルダ内にあります
普通なら実行ファイル(PHP)にはアクセスできないので問題ないはずですが、たぶん公開フォルダにあると外部から何らかの攻撃が可能になるのでしょう
僕はクラッカーじゃないので具体的な手法は知りませんが。
というわけで、この方法はあくまで個人的な趣味のウェブサイト程度ならいいかな、という手法です
「Laravelで試しにWebサイト作ってみたいけど、ドキュメントルートを変更するためにわざわざ違うサーバを契約するのはちょっと・・・」
という人向けです
企業や個人情報を扱うちゃんとしたウェブサイトでやるにはリスクが大きいので、ご注意を
ディスカッション
コメント一覧
まだ、コメントがありません
よくLoadingされてるDocs
新たにPostされたDocs
: ウェブサービス
メルカリやラクマの商品がいつ出品されたのかを調べる裏技
メルカリやラクマなどで商品を探してると、ときどき、 「この商品はいつ出品されたも ...: 仕事環境
15年前のエアコンに洗浄スプレーしたら想像以上にキレイになった
うちのエアコンは新品で購入してからすでに15年が経過しています にもかかわらず、 ...: Laravel
一定時間で消えるフラッシュメッセージを簡単に実装[Laravel8]
以前、手軽にフラッシュメッセージが実装できるnotieを紹介しました 今回は、そ ...: Laravel
ランダムな文字列やユニークなIDをLaravelで生成
random use Illuminate\Support\Str; // 引数 ...: スマホ
4,837円あげるって言うからOCNモバイルOneにLinksmateから乗り換えたんですよ
これまでは僕はスマホの通信会社に、MVNOのLinksmateを使ってきました ...HashMap
created_by
はやぴ
Web/アプリ開発エンジニア
Sierにてお堅いB向けのソフトウェア開発を経て、現在はC向けのWebやアプリを中心に開発しています。
Utilities