事象
Docker Hubにある、php-apache イメージでつくったコンテナが、.htaccessが使えない。
使えるようにする。
やり方
コンテナ内で下記コマンドを実行してrewrite_moduleを読み込ませる
a2enmod rewrite
↓ 確認
apachectl -M
↓ 後日追記。apache再起動が必要だった。
apachectl -k restart
まじ助かりましたー。
- a2enmod
っていうのは、モジュールを有効化するコマンドなんですね(R)
うまく行かなかったやり方
chatGPT3.5に聞いたら以下の回答があって、一見うまくいきそうだったが、rewrite モジュールが読み込まれなかった。
Docker Hubで提供されている公式のphp:8.1-apache
コンテナでは、Apacheの設定ファイルは通常/etc/apache2
ディレクトリに配置されています。
mod_rewrite
モジュールを有効にするためには、/etc/apache2
ディレクトリ内のhttpd.conf
ファイルを編集する必要があります。しかし、公式のphp:8.1-apache
コンテナでは、httpd.conf
ファイルが分割されているため、直接編集することはおすすめしません。
代わりに、/etc/apache2/conf-available
ディレクトリ内にrewrite.load
というファイルを作成し、そのファイルにLoadModule rewrite_module modules/mod_rewrite.so
という内容を記述することで、mod_rewrite
モジュールを有効にすることができます。
具体的な手順は以下の通りです:
php:8.1-apache
コンテナに入るために、コンテナのシェルにアクセスします。docker exec -it [コンテナ名またはID] /bin/bash
rewrite.load
ファイルを作成します。echo "LoadModule rewrite_module modules/mod_rewrite.so" > /etc/apache2/conf-available/rewrite.load
rewrite.load
ファイルを有効にするために、シンボリックリンクを作成します。ln -s /etc/apache2/conf-available/rewrite.load /etc/apache2/conf-enabled/rewrite.load
- Apacheを再起動します。
service apache2 restart
これにより、mod_rewrite
モジュールが有効になります。
注意: 上記の手順は、公式のphp:8.1-apache
コンテナのデフォルトの設定に基づいています。もし、カスタマイズされた設定がある場合は、適宜修正する必要があります。
以上が、php:8.1-apache
コンテナ内でmod_rewrite
モジュールを有効にする方法です。
ちなみに、モジュールの場所が実際のコンテナだと違ってて、
/usr/lib/apache2/modules/mod_rewrite.so
が正しいPathなんだが、ただしいPathに書き換えてもうまくいかなった。
コメント