読者です 読者をやめる 読者になる 読者になる

[Apache] RewriteMap とバーチャルホスト

WordPress で大量リダイレクトのために RewriteMap 導入

したのはいいんだけど、最初 .htaccess に書いてたものを諸事情合って conf 側に移したら、動かなくなった。

RewriteMap は Directory コンテキストにはかけないから、server config コンテキストに書いておいて、それを使う側の RewriteRule は virtual host コンテキストの中の Directory コンテキスト、に書いてた。

あ…、でもそれ、おかしいですよね。ということで、RewriteMap も、それを使う側の RewriteRule と同じ virtual host コンテキストに移したら…、あれ、動かない。えええー。

RewriteMap の前に RewriteEngine が必要でした。おめでとうございます。

<VirtualHost *:80>
    DocumentRoot "/var/www"
    ServerName localhost
    ErrorLog "logs/error_log"
    CustomLog "logs/access_log" common

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteMap staticmap txt:/var/www/rewrite.txt
    </IfModule>

    <Directory "/var/www">
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^(.+\.html)$ /redirector.php [L,E=TARGET:${staticmap:$1}]
    </IfModule>

RewriteEngine 二回書かないといけないところで15分はまりました!。あーコワイ。