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

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

新規登録して質問してみよう
ただいま回答率
85.49%
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スクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

3回答

5828閲覧

ドキュメントルート変更について

toll_tree

総合スコア199

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スクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/05/20 14:17

編集2019/05/21 02:07

前提・実現したいこと

laravelのドキュメントルートの設定を、http://〇〇/public/から、http://〇〇/のように、publicを外したいです。

試したこと

apacheフォルダ内のconfファルダに配置されている、「httpd.conf」に以下の部分を追加しました。

Alias / "/xampp/htdocs/laravelapp/public/" <Directory "/xampp/htdocs/laravelapp/public/"> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,Deny Allow from all </Directory>

補足情報(FW/ツールのバージョンなど)

laravelのバージョンは5.8です
OSはwindowsです。
上記コードの部分を追加したのですが、全く効果がなく、http://localhost/laravelapp/public/〇〇
としなければアクセスできない状態です。
上記問題を解決する為、どなたかアドバイス頂ければ幸いです。

追記です
apacheを再起動し、localhostにアクセスしたら404 not foundとなってしまいました。
さらに、localhost/(ファイル名)とすると、internal server errorが発生してしまいます。

以下は、http://localhost/とし、アクセスした際のアクセスログになります。

「::1 - - [21/May/2019:10:12:17 +0900] "GET / HTTP/1.1" 404 1568 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36"」

以下は、httpd.confファイルに「DocumentRoot "C:/xampp/htdocs/laravelapp/public"」と追記し、http://localhost/とした際のアクセスログになります。

「::1 - - [21/May/2019:11:01:28 +0900] "GET / HTTP/1.1" 404 1568 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36"」

しかし、http://localhost/helloとしましたら、helloファイルと対応づけられているコントローラが呼び出され、ビューページを表示することができました。
helloファイルにアクセスした際のアクセスログが以下になります。
「::1 - - [21/May/2019:11:01:13 +0900] "GET /hello HTTP/1.1" 200 1389 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36"」

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

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

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

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

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

m.ts10806

2019/05/20 14:27 編集

OSはLinux系?windows?Mac? confの設定変更後、Apacheの再起動はした? などなど。 Laravelのタグは外したほうがいい内容です。本件ではLaravelのバージョンとか無関係と言ってもいいです。 むしろApacheタグが必要。
guest

回答3

0

OSはwindowsです。

であれば たいていは~~~\apache\confの配下にhttpd.confがありますね。

「DocumentRoot」の項目を下記のように「絶対パス」で書く(そのほうが確実)

conf

1DocumentRoot "C:/xampp/htdocs/laravelapp/public"

あとはApache再起動。

そうすると http://localhost/でアクセスするとDocumentRootで指定した先をトップして見るようになり
http://localhost/で%DocumentRoot%index.php を実行することになる。

以上。

検索キーワードは「PHP ドキュメントルート 変更」とかでも十分出てきますが、
どう探したのか書いておくと今後に向けて「適切なキーワードの投入方法」もアドバイス可能です。
検索して解決するのであれば今回のように質問をする必要もなく自己解決できるので。


私自身、回答内容で実現できているのでこれで複数の低評価というのは納得しがたいところがあります。
「回答に対する低評価の理由」をコメント願います。

投稿2019/05/20 14:32

編集2019/05/21 00:47
m.ts10806

総合スコア80842

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

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

toll_tree

2019/05/20 14:36 編集

apacheの再起動はしましたが、効果なしでした。
m.ts10806

2019/05/20 14:40

正しく設定されていなかったらそれは私は知らないです。 キーワードも伝えましたし、考え方も追記しました。 あとはヒントにやってください。あなたのPCなのであなたしか触れません。 私が触れるなら数分の作業かもしれませんがそれは有料サポートセンターの仕事なので(teratailを無料サポートセンター代わりに使おうとしてる人が多すぎます)
m.ts10806

2019/05/20 14:41

「”正しく設定をしたうえで”Apacheの再起動をしないと意味がない」というのが私の回答ですが、どこまで伝わってるか非常に不安です。
m.ts10806

2019/05/20 14:48

拡張子なかったらディレクトリと解釈しますよ。 んーそこからかぁー。もうちょっと基本大事にしてもらえませんか? いい加減にやっててプログラミングが身につくわけないです。 というかいい加減にやりすぎて質問サイトではカバーしきれるレベルではないです。
toll_tree

2019/05/20 14:53

あー、ルート情報を記載したファイルに、Route::get('hello' HelloContoroller@index)のようにコントローラーと紐づけてあったんですよね
m.ts10806

2019/05/20 14:56

自分に都合の悪いところをスルーしても結局なんの成長もなく堂々巡りするだけですよ。 誰の目にもあなたが基本や基礎を完全にいい加減にして突っ走っているのは明らかです。 ---- もうちょっと基本大事にしてもらえませんか? いい加減にやっててプログラミングが身につくわけないです。 というかいい加減にやりすぎて質問サイトではカバーしきれるレベルではないです。
toll_tree

2019/05/20 14:57

>自分に都合の悪いところ どこスルーしました?
m.ts10806

2019/05/20 15:00

わざわざ再掲したのに気づかないとは思わなかった。 4行程度きちんと読んで、どこが大事か把握してください。 あなたはLaravelはおろかPHPも基礎からやり直さないとどうにもならないレベルです(というのをやんわり言ってます)
m.ts10806

2019/05/20 15:05

>4行程度 2019/05/20 23:48 の私のコメント >わざわざ再掲した 2019/05/20 23:56 の私のコメントの「----」から下の3行
toll_tree

2019/05/20 15:08

誰がみてもかなり攻撃的な文面とみて取れますが。。。 そこまで罵られてまでアドバイスは求めないので、以後結構です。
m.ts10806

2019/05/20 15:33 編集

罵っているわけではないですよ。勘違いされてもいけないですが「こんなことも知らないの?」と言っているわけでもないです。 「ここまでくるのに必要な過程をすっ飛ばしすぎ」という指摘をしているだけです。 (そりゃ何度もスルーされれば多少は強めの語気になります。大事なことを言っているわけですから) (それにあなたの発言の仕方、割りと最初の方から「わざとやってるのか?」と感じるくらい苛つかせるような言動だった印象です) たぶんここまでマニュアルを見て、仕様を確認して、と言われてきたとは思いますが、 そこを避けて飛ばしてきた結果が今に至っているわけです。 ここまできてマニュアル見ない調べないとなると、これまでの回答も全て無駄になっているということになります。 あなたにアドバイスしてきたのは私1人ではないはずですね。何人もがマニュアルの重要性を回答に込めてきています。それでも避ける理由を知りたいですね。 「難しいから・分からないから飛ばす」はプログラミングをやっていくうえでやってはいけない行動の筆頭です。
m.ts10806

2019/05/20 15:26

自己解決できたら一番早いとは思わないのでしたら、それまでですね。 「知ってるからそういうこと言えるんだ」と言うかもしれませんが、「知ってたら質問せずとも自己解決できる」ということになります。 その「知っている」状態になるために必要なのがマニュアルの確認であったり的確なキーワードの検索であったりするわけですが、その必要なことを端折って「聞いたほうが早い」と何も考えずに質問ばかりしていると成長は全くないので、そこは認識しておいてください。 虫歯にならなかったら歯医者に行く必要はないというのと理論的には同じです。質問しなくて済むならそれが一番早いです。 質問を投げて回答を待つ時間が勿体ないと思えるようになってきたら成長と言えるでしょう。
guest

0

ベストアンサー

私はLaravel方面は疎いので、Apacheの設定方面のみ言及します。

XAMPPのApache上での構築と見受けられるので、
まずはapacheがmod_rewriteに絡む設定をどう処理しているかを
ログを追って確認できるように設定を変えます。
Apache 2.4 系で mod_rewrite のログを出力させるには
にあるように、C:\xampp\apache\httpd.conf にLogLevelを

LogLevel info rewrite:trace8

として保存し、apache再起動。
その後、http://localhost/ にアクセスして、
C:\xampp\apache\logs\access_log
を点検。 / へのアクセスがどう読み替えられてリダイレクトされているかを調べます。
それを質問文中に追記してもらえれば、的を射る回答が寄せられる可能性が高まります。

ログで追えるようになったら、
httpd.conf で DocumentRoot に指定されているパスに
もしも .htaccess があってその中でmod_rewriteを使っているようなら、
それが作用してさらにリダイレクトがかかっていく様がわかるようになるはずです。

あちこちの解説ブログ記事とか読みつつも
mod_rewrite - Apache HTTP Server Version 2.4
結局このドキュメントをしっかり読むところから始まる(っていうか答えがここにある)と思います。


/ でアクセスしました、
おそらく index.htmlとかindex.phpといったファイルを探しました、
でも見つからないので、 404 Not Foundを返しました、
ってところだと見受けました。
ここで念の為確認ですが、
そのテスト環境をLaravel専用にして / が laravelapp/public/ を参照するようにするなら、
mtsさんのいう、httpd.conf で DocumentRoot の記述を変えるのが手っ取り早いです。
mtsさんの回答にある、

DocumentRoot "C:/xampp/htdocs/laravelapp/public"

ですね。
もしくは、シンボリックリンクってわかりますか、
ファイルの実体が"C:\xampp\htdocs\laravelapp\public\index.php"にあるのに
あたかも"C:\xampp\htdocs\index.php"にあるように扱える方法です。
フォルダの実体が"C:\xampp\htdocs\laravelapp\public"にあるのに
あたかも"C:\xampp\htdocs"にあるように扱える方法もできます。
例えば
シンボリックリンクの作成と削除 (Windows Tips)
Windowsのシンボリックリンクとジャンクションとハードリンクの違い:Tech TIPS - @IT
など、「windows10 シンボリックリンク」で検索すれば手がかりになる情報が見つかりますが、
わからなければDocumentRootを書き換える作戦の方が簡単です。

上記の対策でaccess_logにどう現れるか、もう一度追記お願いします。

投稿2019/05/21 00:47

編集2019/05/21 01:51
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

toll_tree

2019/05/21 01:25

ご丁寧にありがとうございます。 アクセスログの方追記いたしました。 掲載頂いたブログ記事の方、読んでみます。
退会済みユーザー

退会済みユーザー

2019/05/21 01:53

構築はハマるとハマり続けて先に進めないので、Laravelの学習が一定のところまで進んでから戻ってきてもよいかと思います。
toll_tree

2019/05/21 01:55

今追記読ませて頂きました。ご丁寧にありがとうございます。 教えて頂きました方法で、access_logにどう表れるのか、チェックしてみたいと思います。
toll_tree

2019/05/21 02:13

シンボリックリンクというのは初めて知りました。掲載頂いたリンク読ませて頂きます。
m.ts10806

2019/05/21 04:28 編集

m6uさん 質問に記載されているAliasの記述が残ってるならそれがネックになっている気がしないでもないですけど。 XAMPPデフォルトでそのようなAliasの記述はないですし、別質問( https://teratail.com/questions/190333 )の回答にも書いた通り、Laravelマニュアルには「Webサーバのドキュメント/Webルートがpublicディレクトリになるように設定してください。」(マニュアルそのまま)とあるので。 Aliasのように縛りの強い設定(ちょっと私見)があるとそれに引っ張られる可能性は低くはないです。 XAMPPをもう1つ別に入れてデフォルトの設定からおこしたほうが早いかもしれないですね。
退会済みユーザー

退会済みユーザー

2019/05/21 03:41

はい、おそらく Alias / "/xampp/htdocs/laravelapp/public/" の行はないほうがいいでしょうね。 ドキュメントルートの記述だけでできちゃう話。 そうすればシンボリックリンクは使わなくても住む。
toll_tree

2019/05/21 04:08

「Alias / "/xampp/htdocs/laravelapp/public/"」 こちらは削除しておこうと思います
guest

0

ローカル開発環境の構築は詰まると苦労するところなので、Laravel開発用に整えられたHomesteadの利用を検討してみてください。
Laravel 5.8 Laravel Homestead

私は、Mac環境なので環境を再現できませんが、以下の記事などを参考に試してみてください。
Windows10でLaravel Homestead環境構築

投稿2019/05/20 15:44

aro10

総合スコア4106

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

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

toll_tree

2019/05/21 00:34

ご回答ありがとうございます。 今は、xamppで開発しているのですが、もう少しいじってみてうまくいかなければ提示いただいた記事を参考に環境を変えてみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問