2
0

More than 3 years have passed since last update.

【Laravel】publicディレクトリの中にサブディレクトリを作成したら「Access forbidden」が出た

Posted at

publicディレクトリの中にサブディレクトリを作成したらAccess forbidden(403エラー)が出た。
気づかずにしばらくハマったのでメモ。

ディレクトリ構成

/
  resources/
    public/
       foo/
         css/
    views/
       foo/
         index.blade.php
routes/web.php
Route::get('/foo', 'FooController@index');

publicディレクトリの.htaccessを確認したら下記の記述があった。

public/.htaccess
    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

LaravelはURLにアクセスした場合フロントコントローラーで処理されているが、
RewriteCond %{REQUEST_FILENAME} !-dの記述によって既存のディレクトリは除外されているよう。

publicディレクトリの既存のディレクトリに直接アクセスしていたため Access fobidden がでていたと思われる。

解決策

1.RewriteCond %{REQUEST_FILENAME} !-dをコメントアウトする

public/.htaccess
    # Handle Front Controller...
    # RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

でもLaravelの他の機能に影響が出そうでちょっと怖い。

2.Routeのurlを変更する

routes/web.php
Route::get('/foo/index', 'FooController@index');

無難な気がする。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0