なみひらブログ

学んだことを日々記録する。~ since 2012/06/24 ~

Laravelアプリケーションをapache httpdに配置するときの作業メモ

背景

Laravelアプリケーションは本番環境では、apache httpdサーバを使っているのでそれに乗せたときのメモです。

  • アプリ名(ディレクトリ名)はappとしています。
  • Laravelアプリケーションはlaravelコマンドで作成済み。

対応

作成されているapp/public/.htaccess に「RewriteBase」を追記する。

<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}]

    RewriteBase /app     #これを追記

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

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

/etc/httpd/conf/httpd.conf に以下を追記する。

# for app
<Location /app/ >
  ProxyPass !
</Location>

Alias /livebook "/var/www/app/public/"
<Directory "/var/www/app/public/">
  Options Indexes FollowSymLinks MultiViews
  AllowOverride all
  Order allow,deny
  Allow from all
</Directory>

/var/www/にLaravelアプリケーションのディレクトリを配置する。

/var/www/appになる

確認

https://www.example.com/app/hello にアクセスして正常に表示されれば(ルーティングされれば)OK

まとめ

他のサイトでよく見る「**/public」をDocumentRootに指定するとあるので、最初public配下の静的phpファイルしかアクセスできないかと思った(´,,・ω・,,`)

参考