LoginSignup
0
1

More than 1 year has passed since last update.

Laravelプロジェクトのpublicを削除したい。(ロリポップ にデプロイ)

Posted at

はじめに

Laravelプロジェクトをロリポップ にデプロイした際に、つまづいた点について、残そうと思います。
また、紹介しているブログを読んでいること前提ですので、話についていけないって思ったら、そっちも一緒に読んでみるといいかもしれないです。(前提の知識が多少あるかもしれないです。)

つまづいた点

基本的に以下のURLの人の記事を参考にデプロイ作業していました。
https://qiita.com/yuzuha3ds/items/4c6b7d3f83e88b45d968

所々、上記のブログで省略されている部分があった気がしますが、些細なことだった気がするので、(忘れてしまったので:baby_tone1:)上記のブログ見てれば、ある程度、なんとかなると思います。

つまづいた点は、本題にもある通り、

ドメイン名/publicじゃないと接続できず、
URLにドメイン名を打っても、403エラーが表示されていました。

ちなみに、上記のブログでも403が表示されていましたが、私の場合、WAFの設定が原因ではありませんでした。後、おそらく、WAFは、セキュリティ面を考えると、有効のままの方が良い気がします。

ざっくり、何をしたか(下で詳しく述べます)

https://gfonius.net/blog/laravel-url-public/
・これ通りに.htaccessを編集した。
→ドメイン名でアクセスしても500エラー(なんでや?)。
publicを加えると、404エラー(こちらは、想定内)。
・ドメイン直下にhtmlのファイルを置いて、ドメイン名自体が使えるか試す。
→ドメイン名をURLに打つと、ドメイン直下のhtmlが表示された。ドメイン名は使えることが分かる。原因は、Laravelプロジェクト側に問題がある?
ドメイン直下に.htaccessを配置し、public/index.phpを遷移するように設定することで解決。

上記を踏まえて、やるべきことを述べます

① そもそも、ドメイン名が使えるか調べる。

ロリポップのサーバーにssh接続し、
~/web/ドメイン名の配下に

// ~/web/ドメイン名のディレクトリ内にindex.htmlファイルを作成する。
$ vim index.html
// 入力モード
:i
// 適当にhtmlタグを入れる。下の例は、適宜、変更してください。できてるか確かめてないので。
例)<h2>ドメイン名は表示されたよ!</h2>
Macの場合、escタブを押し、入力モード終了。
// :wqで保存する+閉じる(:qで閉じるだけ)
:wq

ドメイン名をURLに打って、先ほど、作成したhtmlファイルが表示されるかどうか確認。表示されれば、OK。

② ドメイン名のフォルダに.htaccessを作成+設定する。

.htaccess作成

cd ~/web/ドメイン名
// .htaccessを設置する。
vim .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 ^ public/index.php

</IfModule>

~/web/ドメイン名 配下に.htaccessを設置することで、ドメイン名がURL打たれた時、public/index.phpに遷移することができる。

上の補足をすると、
public内にも.htaccessはあるが、ドメイン名/publicにアクセスしないと使えないので、ドメイン名にアクセスした時に、ドメイン名/publicに遷移させないといけない。

そして、念のために、public内の.htaccessについても載せておく。(デフォルトで同じものがあると思いますが)

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

これがないと、仮に、ドメイン名から、publicのindex.phpへ遷移したとしても、CSSが反映されない状態になる。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1