この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
・「Invalid command 'RewriteEngine'」
・「Invalid command 'SSLEngine'」
・「Invalid command 'Header'」
これはApacheの設定で使おうとしているディレクティブを提供するモジュールが有効になっていないためです。
UbuntuのApache2パッケージはモジュール制で、インストール直後は最小限のモジュールしか有効化されていません。
a2enmodコマンドで必要なモジュールを有効化することで、どのエラーも解消できます。
この記事のポイント
・Invalid command 'RewriteEngine' は sudo a2enmod rewrite で解消できる
・Invalid command 'SSLEngine' は sudo a2enmod ssl で解消できる
・Invalid command 'Header' は sudo a2enmod headers で解消できる
・モジュール有効化後は systemctl restart apache2 で設定を反映する
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Invalid command 'RewriteEngine'
Apacheの設定ファイル(.htaccessやVirtualHost設定等)でURLリライトを使おうとすると、mod_rewriteが有効でない場合にこのエラーが発生します。URLの正規化やWordPressのパーマリンク設定など、実際のWebサービス構築に欠かせないモジュールです。
エラー内容
Jan 19 03:14:28 linuxmaster-01 apachectl[2433]: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
$ sudo a2enmod rewrite Enabling module rewrite. To activate the new configuration, you need to run: systemctl restart apache2 # after enabling, verify with: apache2ctl -M | grep rewrite $ sudo systemctl restart apache2 $ apache2ctl -M | grep rewrite rewrite_module (shared)
# /etc/apache2/sites-available/000-default.conf の設定例 <Directory /var/www/html> AllowOverride All Require all granted </Directory>
設定変更後は sudo apachectl configtest で構文チェックを行ってから再起動するのが鉄則です。
Invalid command 'SSLEngine'
HTTPSを有効にするためにSSL設定を書いた際、mod_sslが有効でない場合にこのエラーが発生します。エラー内容
Jan 19 03:15:25 linuxmaster-01 apachectl[2485]: Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
$ sudo a2enmod ssl Considering dependency setenvif for ssl: Module setenvif already enabled Considering dependency mime for ssl: Module mime already enabled Considering dependency socache_shmcb for ssl: Enabling module socache_shmcb. Enabling module ssl. See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates. To activate the new configuration, you need to run: systemctl restart apache2 $ sudo systemctl restart apache2
HTTPS化にはSSL証明書の設定も別途必要です。Let's Encryptを使う場合はcertbotが証明書取得とApache設定の大部分を自動処理します。
Invalid command 'Header'
HTTPレスポンスヘッダーを追加・変更するHeaderディレクティブを使おうとした際、mod_headersが有効でない場合にこのエラーが発生します。セキュリティ強化(X-Frame-Options・Strict-Transport-Security等)やキャッシュ制御でよく使われるディレクティブです。
エラー内容
Jan 19 03:18:15 linuxmaster-01 apachectl[2599]: Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration
$ sudo a2enmod headers Enabling module headers. To activate the new configuration, you need to run: systemctl restart apache2 $ sudo systemctl restart apache2
# セキュリティヘッダーの追加例(/etc/apache2/sites-available/000-default.conf等) Header always set X-Frame-Options "SAMEORIGIN" Header always set X-Content-Type-Options "nosniff" Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
a2enmodコマンドの使い方|モジュール管理の基本
Ubuntu/Debian系のApacheには、モジュールの有効化・無効化を管理するa2enmod・a2dismodコマンドが用意されています。RHEL/Rocky Linux系(dnfでhttpdを導入)ではhttpd.confのLoadModuleディレクティブを直接編集する方式と異なり、UbuntuではシンボリックリンクでLoadModuleを自動管理します。日常的な運用でモジュールの有効・無効を切り替える際に重宝します。
| 操作 | コマンド |
|---|---|
| モジュールを有効化する | sudo a2enmod モジュール名 |
| モジュールを無効化する | sudo a2dismod モジュール名 |
| 有効なモジュール一覧を確認する | apache2ctl -M |
| 利用可能なモジュール一覧を確認する | ls /etc/apache2/mods-available/ |
現在有効なモジュールを確認する
$ apache2ctl -M Loaded Modules: core_module (static) so_module (static) ... rewrite_module (shared) ssl_module (shared) headers_module (shared)
その他のよくある「Invalid command」エラーと対処一覧
Ubuntu 20.04 + Apache 2.4環境で発生しやすいモジュールエラーをまとめました。同じ手順で a2enmod を使って対処できます。| エラーメッセージ(Invalid command) | 必要なモジュール | 有効化コマンド | 主な用途 |
|---|---|---|---|
| RewriteEngine | mod_rewrite | sudo a2enmod rewrite |
URLリライト・.htaccess |
| SSLEngine | mod_ssl | sudo a2enmod ssl |
HTTPS設定 |
| Header | mod_headers | sudo a2enmod headers |
レスポンスヘッダー操作 |
| ProxyPass | mod_proxy | sudo a2enmod proxy proxy_http |
リバースプロキシ設定 |
| Deflate | mod_deflate | sudo a2enmod deflate |
gzip圧縮転送 |
| Expires | mod_expires | sudo a2enmod expires |
ブラウザキャッシュ期限設定 |
本記事のまとめ
| エラー | 原因となるモジュール | 対処コマンド |
|---|---|---|
| Invalid command 'RewriteEngine' | mod_rewrite が無効 | sudo a2enmod rewrite |
| Invalid command 'SSLEngine' | mod_ssl が無効 | sudo a2enmod ssl |
| Invalid command 'Header' | mod_headers が無効 | sudo a2enmod headers |
| モジュール有効化後の設定反映 | 変更が未反映 | sudo systemctl restart apache2 |
| 設定ファイルの構文チェック | エラーの事前検出 | sudo apachectl configtest |
Linux Master Pro Seminar(2日間ハンズオン)では Apache・SSL設定・モジュール管理から SELinux 対応まで、
実際のサーバーを触りながら Webサーバー構築を習得できます。
>> セミナー詳細・お申込みはこちら
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます