LoginSignup
2
3

More than 5 years have passed since last update.

FuelPHPでデプロイしたアプリケーションのURLからpublicを消す

Posted at

http://hoge.com/appname/な感じでサブディレクトリにデプロイしようとしたとき、ApacheのエイリアスやLinuxのシンボリックリンクというワードにたどり着くまでちょっと時間かかったのでめも。

FuelPHPで作成したアプリをそのままサーバーに載せるとhttp://hoge.com/fuga/publicとなります。
普通はアプリ単体でドメインを取ると思うのでvar/www/html/fuga/publicをドキュメントルートにすればいいだけですが。
ディレクトリ構成には手を入れたくないのでpublicディレクトリをリネームしたり移動するのは無しで。

シンボリックリンクを使う

ln -s /var/www/app/fuga/public /var/www/html/fuga

非公開の場所にアプリケーションを設置、公開ディレクトリからシンボリックリンクを張ります。
apacheにはシンボリックリンク先のファイルアクセスを許可するかの設定FollowSymLinks(デフォルトで有効)があるのでこれが有効であればこれでアクセスできます。

シンボリックリンクはユーザーのアクセス権が無いファイルにも作成できたりするので環境によってはリスクがあります。
http://blog.tokumaru.org/2013/09/symlink-attack.html
複数サービスを1サーバーで運営したりする場合は注意が必要です。

Apacheのエイリアスを使う

Alias /fuga/ "/var/www/app/fuga/public/"

シンボリックリンクと似ていますが、apacheが提供している機能です。

/etc/httpd/conf/httpd.conf内に設定します。
http://www.adminweb.jp/apache/docroot/index3.html
特定URLを特定のパスへ変換してくれます。

またpublicディレクトリ内のhtaccessのRewriteBaseも変更しないと生成されるリンクのURLが正しくならないようです。
http://hoge.com/fuga/test/1 とならず http://hoge.com/test/1 になる
http://qiita.com/abeichi/items/65ca98a8e2400dfc75b3

RewriteBase /fuga
2
3
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
3