現在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
になるという認識であっておりますでしょうか?
調べてもはっきりと記載されている記事が見つけられなかったため確認していただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー