【Laravel】Aush認証のリンクで404エラー


LaravelでAuth認証を導入した際に、ログインページへのリンクで404エラーになってしまいました。
解決までの道筋を載せます。

環境

MAMP
OS:macOS
Laravel:8.51.0
PHP:7.4.12
MySQL:5.7.32

エラー

ログインしていたら「設定」「ログアウト」のボタンを表示、もしログインしていない場合は「ログイン」と「新規登録」に飛ぶ。
ログインは"/login"というアドレスで、新規登録は"/register"というアドレスに飛ぶが、このように表記しても404エラーになる。

index.blade.php
@if (Auth::check())
<p>USER: {{$user->name}}</p>
<a class="btn btn-primary" href="#" role="button">設定</a>
<a class="btn btn-primary" href="#" role="button">ログアウト</a>
@else
<p>ログインしていません</p>
<a class="btn btn-primary" href="/login" role="button">ログイン</a>
<a class="btn btn-primary" href="/register" role="button">新規登録</a>
@endif

この画面からボタンを押すと
※作成中のためデザインがしょぼくてすみません

ログイン画面での404エラー

新規登録画面での404エラー

アドレス部分を見てみると、遷移後はアドレスが短縮されている。
ちなみにhref="/login"を、href="study_stamp/public/login"に変更してみると、アドレス部分は「localhost:8888/study_stamp/public/study_stamp/public/login/」になってしまった。

どうやら指定アドレスで公開する設定をしていなかったことが原因だということが分かった。

指定アドレスで公開するとは?

例えばMAMPを利用すると、Webサーバーの公開ディレクトリが「htdocs」になる。
「htdocs」内にファイルを配置すればWeb上に公開される。

今回の件だと「htdocs」フォルダに「study_stamp」というフォルダを入れているので、アクセスする際には。

http://localhost:8888/study_stamp/public/

にアクセスする必要があった。

しかし、このアドレスの/study_stamp/public/部分を無くしたい。
その際にするのが今回の指定アドレスで公開するという設定になる。

指定アドレスで公開するためには

今回はMAMPを利用しているので、MAMPでの設定方法になります。

MAMPのフォルダ内に、「conf」フォルダがある。
その中の「apache」フォルダ内のhttpd.confファイルを開く。

以下の記載の場所を探す

httpd.conf
# Virtual hosts
# Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Include前の#を外し、記述を追加する。

httpd.conf
# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

<VirtualHost *:8888>
    DocumentRoot "/Applications/MAMP/htdocs/study_stamp/public"
    ErrorLog "logs/laravel-error_log"
    CustomLog "logs/laravel-access_log" common
</VirtualHost>

DocumentRootは自分のプロジェクト名で書く。
保存して再起動すると、無事指定アドレスで公開することができました。

無事ログイン画面に遷移することもできました。

この設定は最初にやらなければいけなかったことですが、それを忘れたまま進めてしまったためでたエラーでした。
もし同じ状況の方がいれば、少しでも参考になればと思います。