質問: 現在、Apache2.2でSSL(Let's encrypto)を使用しています。 今回リライトを使用する要件が出てきたためmod_rewriteを設定しています。 以下のようなhttpd.confに編集してhttpdを再起動するも動作しない状況です。 ちなみにテスト環境ではHTTPSを使用していませんが、で同じようにRewrite設定をして動作していました。 ``` ServerAdmin support@xxx.com SSLEngine on SSLCertificateFile /etc/letsencrypt/live/www.xxx.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.xxx.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.xxx.com/chain.pem DocumentRoot /var/www/html ServerName www.xxx.com ServerAlias xxx.com ErrorLog logs/xxx.com-error_log CustomLog logs/xxx.com-access_log common #ここから追加 RewriteEngine on RewriteLogLevel 0 RewriteLog /var/log/httpd/rewrite.log RewriteRule /public/([0-9a-z]+)/([0-9a-z]+)$ /php/public_data_load\.php?a=$1&b=$2 [PT] ``` 以下は確認してみましたが。。 * RewriteEngineをに記載しても同じでrewrite.logもでません。 * rewrite.logの権限は666にしています。 * LoadModule rewrite_module modules/mod_rewrite.so コメントされていない。 * Google先生にお聞いてもわからずでした。 どなたかよろしくお願いします。
回答: うまく動かないのであれば、`RewriteLogLevel`を`9`などにしてRewritelogを出力しうまく動かない原因を調べるべきです。 コメントを受けて追記 > > RewriteLogLevelを9にしてhttpdを再起動しましたがログは吐かれませんでした。 > > > では以下どちらかでしょう。 * /var/log/httpd/rewrite.log に apacheの実行ユーザーに書き込み権限が無い * このVirtualHost定義でport 443を受けてない(Listen 443が無いかこのVirtualHost定義より前に別の定義で443を受けている。) rewriteを行う前の大前提として以下の認識でいいのですよね? 以下にアクセスした場合、`CustomLog logs/xxx.com-access_log common` で指定したアクセスログに1,2はhttpステータス200で記録され、3は404で記録される。 * https://example.com/index.html (index.htmlが存在するてして) * https://example.com/php/public_data_load.php?a=aaa&b=bbb * https://example.com/public/aaa/bbb