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

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

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

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

PHP

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

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

解決済

Laravelの.htaccess内のRewriteRuleの処理について確認させてください。

spiderindigo
4U5zo

総合スコア20

Laravel

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

PHP

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

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

1回答

1評価

0クリップ

396閲覧

投稿2022/04/16 18:24

編集2022/04/30 17:08

現在Laravelのルーティングについて勉強しております。
Laravelプロジェクトのpublicフォルダにある.htaccessファイルの中でリクエストURLがpublicフォルダ内のファイルでもディレクトリでもない場合にindex.phpを実行するという記述があります。
その記述の中でURLを書き換えているRewriteRule ^ index.phpの部分について2点確認させてください。

.htaccessの記載内容

<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>

前提条件

・ドキュメントルートは、XAMPPでインストールしたApacheの設定ファイルXAMPP\apache\conf\httpd.confで変更可能ですが特にいじっていないためルートディレクトリドキュメントルートはD:\XAMPP\XAMPP\htdocsです。
そのためhttp://localhostではD:\XAMPP\XAMPP\htdocs\index.phpによりhttp://localhost/dashboard/にリダイレクトされます。

・ドキュメントルートD:\XAMPP\XAMPP\htdocs配下にfirstlaravelというLaravelプロジェクトを作成しました。

・.htaccessファイルはD:\XAMPP\XAMPP\htdocs\firstlaravel\publicに配置しています。
リクエストURLはhttp://localhost/firstlaravel/public/helloを想定しています。

・ここまで記載した前提条件ですが下記のサイトに沿ってHello World!が表示されるようにした結果となります。
https://codezine.jp/article/detail/11231

質問

①RewriteBaseは記載されていないとデフォルトで/firstlaravel/publicで認識あっておりますでしょうか?

RewriteRule ^ index.phpでは「^」のみの記述だと「全ての行」を表すと聞きました。

(4)のRewriteRuleに記述したルールにのっとってリクエストを移管します。RewriteRuleは、最初に移管元のパスパターンを記述し、続けて移管先のパスパターンを記述します。ここでは移管元のパスパターンとして「^」を記述しています。「^」は行頭を表す記号で、例えば、「^こんにちは」というのは、「こんにちは」から始まる行を表します。その行頭記号の後ろに何も記述がない場合は「全ての行」を表します。移管先がindex.phpです。

https://codezine.jp/article/detail/11370
ここでいうと「全ての行」とはリクエストURLの/firstlaravel/public/helloを表していて、
移管後はRewriteBaseの/firstlaravel/publicと移管先のindex.phpを合わせた、
/firstlaravel/public/index.phpになるという認識であっておりますでしょうか?

調べてもはっきりと記載されている記事が見つけられなかったため確認していただけますと幸いです。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

m.ts10806

2022/04/16 21:00

>http://localhost/firstlaravel/public/hello 正しくインストレーションできていれば、ドキュメントルートがpublicとなってURLにpublicは入らないので("public/hello"というルーティング切っているなら申し訳ない)前提が間違っているような。
spiderindigo

2022/04/17 05:26

ご確認いただきありがとうございます。 前提を修正させて頂きました。XAMPPのApacheを使っているのですが、そちらの設定を変更していないため現状ドキュメントルートは`D:\XAMPP\XAMPP\htdocs`となっております。
m.ts10806

2022/04/17 05:39

そういうわけではなく、LaravelのドキュメントルートはLaravelプロジェクトのpublicディレクトリにするというのがLaravel導入部分の説明です。 public入ってる時点で間違ってます。
spiderindigo

2022/04/17 07:06

申し訳ございません。本来であればLaravelのpublicディレクトリをドキュメントルートに設定するということは認識しておりますが現状、https://codezine.jp/article/detail/11370 の記事に沿ってやっている為そのように設定はしておりません。 確認したところドキュメントルートが`D:\XAMPP\XAMPP\htdocs`の状態でも.htaccessによって問題なくURLの置換が行われておりました。 どういう処理がLaravelの.htaccess内のRewriteRuleでおこなわれているのかという観点でご確認いただけますと幸いです。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Laravel

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

PHP

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

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。