Это сводит меня с ума. Я не могу заставить директиву RewriteMap работать для php скрипта на windows. Вот соответствующий фрагмент из моего файла httpd.conf:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteMap router "prg:C:/dev/web/www/routing.php"
RewriteRule (.*) ${router:$1}
</IfModule>
Мой простой php скрипт выглядит так:
#!C:\Program Files\PHP5.3.2\php-win.exe
<?php
set_time_limit(0); # forever program!
$keyboard = fopen("php://stdin","r");
while (1) {
$line = trim(fgets($keyboard));
echo "/sandbox.php?url=$line";
echo "\n";
}
?>
Когда я пытаюсь запустить Apache, я получаю следующую строку в журнале ошибок:
[ошибка] (OS 193)%1 не является действительным Win32 приложение. : mod_rewrite: не удалось запустить программу RewriteMap C:/dev/web/www/routing.php Configuration Failed
В документации apache говорится о "волшебном трюке с печеньем" (под заголовком "Внешняя программа переписывания"), который должен быть первой строкой скрипта, указывающей на интерпретатор. Здесь я ошибаюсь или мне нужно по-другому вызвать директиву RewriteMap?