現在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
プレビュー