事象
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/bashrewrite.loadファイルを作成します。echo "LoadModule rewrite_module modules/mod_rewrite.so" > /etc/apache2/conf-available/rewrite.loadrewrite.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に書き換えてもうまくいかなった。


コメント