laravelを使用しています。
https://localhost/project/public/への接続はできるのですが、
それ以外へのアクセスを行うと404エラーが発生してしまいます。
原因として想定されるものは何が考えられますでしょうか。
なお、mac上では接続できるのですが、vagrantにて設置したところ下記のような現象が発生しております。
php
1<?php 2 3//こちらには接続できる 4Route::get('/', function () { 5 return print "test"; 6}); 7 8//こちらに接続すると404エラー 9Route::get('/test', function () { 10return print "test2"; 11}); 12 13 14Route::auth(); 15 16Route::get('/home', 'HomeController@index'); 17~
エラーメッセージ
Not Found
The requested URL /project/public/test was not found on this server.
Apache/2.4.7 (Ubuntu) Server at 172.23.130.23 Port 8443
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
natadyさん、aglkjgggさん お力添えありがとうございました。
無事解決いたしました。
リライトに関しまして、対応が必要な事項が別にありましたので、
既に解決済みだったことも含め対応した全てのことを、こちらの方に記載をさせていただきます。
環境
ubuntu
vagrant
apache2
問題
laravelをインストールしたが404エラーで表示ができない。
原因
1.laravelの特定のフォルダに対して権限が付与されていなかった
2.apache2のリライト対応がされていなかった
対応内容
原因1にもある特定のフォルダに対して権限の付与を行いました。(aglkjgggさんのコメントをご参照)
storage以下全てのディレクトリフォルダを777に設定する
chmod 777 storage -R
bootstrap/cache以下全てのディレクトリフォルダを777に設定する
chmod 777 bootstrap/cache -R
トップページのみ参照ができたが、配下が依然404エラー
コメントのご指摘を元にapache側に問題があると調査。
最初はhttpd.conf自体が見つからず困惑。apache2の場合は、/etc/apache2/apache2.confが該当。
下記等を参照
httpd.confについて調べたのでまとめたよ
http://r7kamura.hatenablog.com/entry/20110222/1298371277
AllowOverrideの設定を変更するも404エラー
/etc/apache2/apache2.conf へ下記を追加しましたが、やはり404エラーとなります。AllowOverrideをAllにしました。
<Directory /var/www/html/project/public>
AllowOverride All
Options Indexes FollowSymLinks
Require all granted
</Directory>
(その後、sudo service apache2 restart で再起動)
また、下記のサイトにて似たような事例があったため、public/.htaccessを変更してみたのですが、変わらず404エラーとなります。
teratailを検索していたところ、下記にヒントが有りました。
Laravel4のroutes.phpの設定でNot foundが表示される問題
https://teratail.com/questions/5920
以下、コメントより抜粋
「apache2.conf」とsites-enabledの設定ファイル、また、laravelのpublic配下にある.htaccessファイルの設定を全て確認しましたが、特におかしいと思われる記述が見当たりませんでした。
次に、mod_riwriteが有効になっているかどうか、次のコマンドを叩いたところ、
「ls /etc/apache2/mods-enabled/」
見事に、rewrite.loadが見当たりませんでしたので、「sudo a2enmod rewrite」でmod_rewriteを有効化しました。その後、無事にアクセスできることを確認しました。
sudo a2enmod rewriteを実行するも、依然404エラー
更に調べたところ、restartが必要だったので実行する。
下記を参照に対応
http://qiita.com/u-akihiro/items/c7a5bb38c34858d00c2a
まずはmod_rewriteが利用可能となっているかを確認する。
cat /etc/apache2/mods-available/rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
使えることが確認できたらa2enmodというコマンドを実行する。
sudo a2enmod rewrite
a2enmodを実行すると以下の様なメッセージが出てくる。
Enabling module rewrite.
To activate the new configuration, you need to run:
service apache2 restart
忘れずにrestartしよう
sudo service apache2 restart
以上で、無事に接続できました。
自分のPC上では割りとすんなり環境構築ができていたのですが、人の環境だとなかなか難しいですね。
大変勉強になりました。
また、ご助言いただきました、natadyさん、aglkjgggさん ありがとうございました。
投稿2016/09/12 23:22
編集2016/09/13 03:04総合スコア53
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/09 07:19
0
LaravelではWebサーバのDocumentRoot
にpublicを指定する必要があります。
VirtualHostの場合の例.
<VirtualHost *:80> DocumentRoot "C:\xampp\htdocs\myblog/public" ServerName myblog.net </VirtualHost>
また、よくある問題としてHTTP 500が返ってくる場合は、
storage
とbootstrap/cache
ディレクトリのパーミションを適切に設定する必要があります。
※適切なパーミッションは忘れました。
777にすればとりあえず動作しますが、セキュリティの為公式のドキュメントを参照してください。
# storage以下全てのディレクトリフォルダを777に設定する chmod 777 storage -R # bootstrap/cache以下全てのディレクトリフォルダを777に設定する chmod 777 bootstrap/cache -R
投稿2016/09/09 03:27
編集2016/09/09 03:31総合スコア769
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/09 03:31
2016/09/09 06:12
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。