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ファイルしかアクセスできないかと思った(´,,・ω・,,`)