forget for get

覚えるために忘れる

Laravelでドキュメントルートを変えずに複数サイト運営するTips


Laravelを使うには、publicディレクトリをドキュメントルートにしないといけないのですが、
レンタルサーバなどでドキュメントルートを変更できない場合の対応。
また、小規模サイトの場合、サイトごとにLaravelを使うよりは、
一つのLaravelでルーティングで複数サイトを使いたいという場合の対応。

ディレクトリ構成のイメージ

laravel/app/routes.php
       /public/
       
mypage/.htaccess
      /css/
      /js/

yourpage/.htaccess
      /css/
      /js/


mypage/.htaccessを以下のようにする。(yourpage/.htaccessも同じ)

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ ../laravel/public/index.php [L]

すると、「http://ドメイン/mypage/xxx」のアクセスをLaravelで受け取れる。(yourpageも同じ)

laravel/app/routes.phpを以下のようにする。

Route::group(array('prefix' => 'mypage'), function()
{
    Route::get('/', 'MyPageController@index');
    Route::get('/news', 'MyPageController@news');
});

Route::group(array('prefix' => 'yourpage'), function()
{
    Route::get('/', 'YourPageController@index');
    Route::get('/news', 'YourPageController@news');
});


prefixでまとめることで、複数サイトも管理しやすい。

ただ、ドキュメントルートにLaravel本体を置くのはセキュリティ上よろしくないと思うので、
正しい解決策ではないかもしれません。