はじめに
.htaccessを使いたくてDocker apache .htaccessと検索かけてみたらphp-apacheイメージ使った記事ばっかり出てきた、phpは使ってないんだけどなーな人向けです
環境
- Docker version 20.10.14
- docker-compose version 1.29.2
とりあえず環境作る
.
├── docker-compose.yml
├── index.html
└── .htaccess
version: "3"
services:
web:
image: httpd:2.4
ports:
- "8080:80"
volumes:
- .:/usr/local/apache2/htdocs/
working_dir: /usr/local/apache2/htdocs/
コンテナを起動させるとindex.htmlの内容が表示されます。が、.htaccessは反映されません。デフォルトでは.htaccessが無効になっているようです。
.htaccessを有効にする
httpd.confを変更できるようにする
.htaccessを有効にするには設定ファイルhttpd.confを変更する必要があります。httpd.confは/usr/local/apache2/conf/にあるので、一旦中身をコピーしてローカルhttpd.confを作ります。
.
├── docker-compose.yml
├── index.html
├── .htaccess
└── httpd.conf <-- コンテナ内のhttpd.confの中身コピーして追加
docker-compose.ymlいじってローカルとコンテナ内のhttpd.confが同期するようにします
version: "3"
services:
web:
image: httpd:2.4
ports:
- "8080:80"
volumes:
- .:/usr/local/apache2/htdocs/
- ./httpd.conf:/usr/local/apache2/conf/httpd.conf # <-- 追加
working_dir: /usr/local/apache2/htdocs/
これでhttp.confを変更できるようになりました。
http.conf変更する
.htaccessを有効にするために必要な変更は2箇所
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so <-- コメントアウト外す
<IfModule unixd_module>
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All <-- NoneからAllに変更
これで.htaccessが有効になります。めでたい。