mod_rewriteで無限ループする場合

httpd.confや.htaccessにおいて、
mod_rewriteを利用して動的URLを静的URLに見せかける方法は便利だが、
たまに無限ループするパターンがある。

それは、書き換えた後にまた書き換え処理を起こそうとしているからで、
どこかで停止をかける必要がある。

例えば

/gonzui.cgi/search?q=the_date

/search/the_date

でアクセス出来るようにする場合、.htaccessなどでは

RewriteEngine on
RewriteRule ^/search/(.*)$ http://www.4web8.com/search/gonzui.cgi/search?q=$1 [L]

というようにするが、これだけだと、
gonzui.cgiになった後にまた書き換えようとするので、正解は

RewriteEngine on
RewriteRule gonzui.cgi – [L]
RewriteRule ^/search/(.*)$ http://www.4web8.com/search/gonzui.cgi/search?q=$1 [L]

となる。