質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.45%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

55843閲覧

index意外のページにアクセスすると404エラーが発生する

ocms

総合スコア53

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

2グッド

7クリップ

投稿2016/09/09 03:08

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

amesta122, s_tatsuki👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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
ocms

総合スコア53

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

こんにちは!
Apacheの.htaccessは許可されていますでしょうか?
もし許可されていなければ適切にリライトできずにindex以外はエラーになってしまいます。

.htaccessの設定についてはこちらの記事が参考になりそうです。

投稿2016/09/09 03:27

natady

総合スコア606

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

natady

2016/09/09 07:03

> /etc/apache2/apache2.conf へ下記を追加しましたが、やはり404エラーとなります。AllowOverrideをAllにしました。 一応こちらにコメントを書きます。 念のため確認しますが、設定ファイルを書き換えた後、Apacheの再起動はされましたでしょうか?
natady

2016/09/09 07:19

すみません、再起動してありましたね。 Apacheのログはどのようなものが出力されているでしょうか? `tail -n 10 -f /var/log/httpd/ログファイル名`で404時に出るエラーを見てみてください。
guest

0

LaravelではWebサーバのDocumentRootにpublicを指定する必要があります。

VirtualHostの場合の例.

<VirtualHost *:80> DocumentRoot "C:\xampp\htdocs\myblog/public" ServerName myblog.net </VirtualHost>

また、よくある問題としてHTTP 500が返ってくる場合は、
storagebootstrap/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
aglkjggg

総合スコア769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

natady

2016/09/09 03:31

Laravelはドキュメントルートにパブリックを指定しなくても動作します。 例えばドキュメントルート下に`laravelProject/public`までの`hoge`というシンボリックリンクを張ると、`localhost/hoge`で`laravelProject/public/index.php`にアクセスできます。
ocms

2016/09/09 06:12

ありがとうございます。 /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エラーとなります。 http://turkey246.hatenablog.com/entry/2015/07/18/124557 <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On # Redirect Trailing Slashes If Not A Folder... RewriteRule ^(.*)/$ /project/$1 [L,R=301] RewriteBase /project # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule> >storageとbootstrap/cacheディレクトリのパーミションを適切に設定する必要があります。 また、こちらに関しましては、ちょうど先日までここでもつまづいておりました。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.45%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問