Laravel をインストールしたら TOP 以外 Not found(Ubuntu)

2022/06/30

Ubuntu に Laravel をインストールするとルート以外のページが Not found となる現象が発生しました。

今回はこの原因と解決策についてエントリーしたいと思います。

【 500 エラーの場合】
storage と cache の書き込み権限を付与すると解決するケースが多いです。


[root@example ~]# chmod -R 777 /var/www/html/storage/
[root@example ~]# chmod -R 777 /var/www/html/bootstrap/cache/

 

原因

原因は2つあります。

1)Apacheの設定ファイル(AllowOverride All)

2)mod_rewrite を有効にする

 

解決策

 

1)Apacheの設定ファイル(AllowOverride All)

Ubuntu + Apache2 の構成はちょっと独特です。

設定ファイルの場所は以下になります。

/etc/apache2/apache2.conf
【 ポイント 】
Ubuntu のリポジトリから取得出来る Apache2 はオリジナルの Apache2 とはディレクトリの構成や設定の方法が違います。

それを以下のように変更。


<Directory "/data/laravel">
    # AllowOverride None
      AllowOverride All
    Require all granted
</Directory>

 

上記のように AllowOverride の値が None になっていると .htaccess が効かずにルーティングができなくて Not Found になってしまいます。

AllowOverride を All に書き換えてやると、各ディレクトリにある .htaccess の上書きが効くようになります。

設定ファイルを書き換えたら Apache を再起動するのを忘れないようにしましょう。


$ sudo service apache2 restart

 

2)mod_rewrite を有効にする

.htaccessファイルを有効化する上で mod_rewrite.so モジュールが必要です。

1.まずはmod_rewriteが利用可能となっているかを確認


$ cat /etc/apache2/mods-available/rewrite.load

 

上記のコマンドを打って以下が表示されればOK


LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

 

使えることが確認できたら a2enmod というコマンドを実行します。


$ sudo a2enmod rewite

 

a2enmod はUbuntuで Apache2 のモジュールを有効にするコマンドです。

a2enmodを実行すると以下の様なメッセージが出てきます。


Enabling module rewrite.
To activate the new configuration, you need to run:
  service apache2 restart

 

忘れずに restart しましょう。


$ sudo service apache2 restart

 
以上です。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-環境構築