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

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

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

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

Apache

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

Q&A

解決済

1回答

9206閲覧

Laravel4のroutes.phpの設定でNot foundが表示される問題

senachi

総合スコア96

Laravel 4

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

Apache

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

0グッド

1クリップ

投稿2015/01/27 09:05

Laravel4を最近触り始めたのですが、routes.phpの記述で詰まってしまいました。

具体的にどこで詰まったかですが、routes.phpに

lang

1Route::get('/', function(){ 2 return "Here is root view."; 3});

と記述した場合、URIを「xxx.xxx.xxx.xxx」あるいは「xxx.xxx.xxx.xxx/」と入力すると正しく表示されます。

一方で、

lang

1Route::get('*****/', function(){ 2 return "Here is root view."; 3});

と記述した場合、URIを「xxx.xxx.xxx.xxx/*****」(*****は適当な文字列)と入力すると、Not Foundが返ってきます。

Apacheの設定、あるいはLaravelの.htaccessの設定が問題ではないかと疑っていますが一向にヒントが得られません。
英語のドキュメントなども片っ端から検索しましたが、いまいち私の症状とは一致しません。

詳しい方どうか知恵をお貸しください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Route::get()の第一引数に*が使われていますが、これは「アスタリスク」でしょうか、「ワイルドカードを想定している」のでしょうか、「伏せられている」のでしょうか
もう少々内容を具体的に書いて頂けると助かります

※以下の例では、アスタリスクが5個並ぶと表示できないようなので4個に減らしています

手元のhomestead環境では、「アスタリスク」であった場合

lang

1Route::get('****/', function(){ 2 return "Here is root view."; 3});

http://xx.xx.xx.xx/****(適当な文字列ではなくアスタリスクそのもの)でNot Foundにならず表示が可能でした

「ワイルドカード想定」の場合、Route::get()では使えません(指定した文字列そのもの以外すべてそのルートを通らなくなる)ので別の方法が必要です

lang

1Route::get('/{param?}', function(){ 2 return "Here is root view."; 3});

のような形で、{}で囲んであげるとワイルドカードのような動作が可能です(が、少なくともサイトのホームにおいての利用は推奨できません)

「伏せられている」場合は判断できませんので、具体例を提示ください
場合によってはそれこそApacheの設定や.htaccessが必要になるかもしれません

全然見当違いのことを書いていたらすみません

投稿2015/01/29 08:18

fabled

総合スコア41

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

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

senachi

2015/01/29 09:19

ご回答ありがとうございます。また、誤解を招く質問の仕方をしてしまい申し訳ありません。 >これは「アスタリスク」でしょうか、 はい、ワイルドカードではなくアスタリスクです。 私の実際の環境では、 Route::get('hoge/', function(){ return "hogehoge"; } のようになっています。 この場合、 xxx.xxx.xxx.xxx/hoge というURIにアクセスすると、”hogehoge”と出力されることを期待しています。 ですが、実際はNot foundが表示されてしまいます。
fabled

2015/01/29 11:05

試しにその記述をそのままコピーしてroutes.phpに入れたら、当方の環境では "hogehoge" と表示されるんですよね・・・ PHP側の問題ではないということを前提に、思いつくことを書き出してみますね -Apacheの設定で、Laravelインストール先のディレクトリに対するAllowOverride が none になっていないかどうか --noneだと.htaccessが禁止になります -Apacheモジュールのmod_rewriteが有効になっているかどうか --.htaccessでmod_rewriteの機能を利用している為 とりあえず上記2点、ご確認いただけますでしょうか
senachi

2015/01/29 12:14

ありがとうございます、確認の後報告致します。 少々お待ちいただけますと幸いです。
senachi

2015/01/30 02:19

確認しました。 結論から申し上げますと、無事解決しました。 「apache2.conf」とsites-enabledの設定ファイル、また、laravelのpublic配下にある.htaccessファイルの設定を全て確認しましたが、特におかしいと思われる記述が見当たりませんでした。 次に、mod_riwriteが有効になっているかどうか、次のコマンドを叩いたところ、 「ls /etc/apache2/mods-enabled/」 見事に、rewrite.loadが見当たりませんでしたので、「sudo a2enmod rewrite」でmod_rewriteを有効化しました。その後、無事にアクセスできることを確認しました。 大変有難いご指摘ありがとうございました。 もっと、Apacheを勉強する必要がありそうです・・・。
fabled

2015/01/30 04:52

無事解決できましたかーよかったです! おかげさまでBAが嘘(?)にならずに済みました! ぜひぜひLaravel楽しんでいってくださいませー
senachi

2015/01/30 05:50

ありがとうございます(`・ω・´)b
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問