Apache mod_rewrite:在Windows机器上使用PHP脚本的RewriteMap指令

这一直使我疯狂。 我似乎无法得到的RewriteMap指令工作的Windows脚本的PHP脚本。 这里是我的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.phpconfiguration失败

apache文档指的是“魔术cookies技巧”(在“外部重写程序”标题下),它应该是指向解释器的脚本的第一行。 这是我要错了,还是我需要调用RewriteMap指令不同呢?

Solutions Collecting From Web of "Apache mod_rewrite:在Windows机器上使用PHP脚本的RewriteMap指令"

我怀疑魔术饼干技巧会在Windows上工作。 这是一个UNIX / Linux功能。

您必须指定PHP解释器和脚本作为其参数(另请参阅http://www.webmasterworld.com/forum92/859.htm ):

 RewriteMap router "prg:C:/Program Files/PHP5.3.2/php-win.exe C:/dev/web/www/routing.php" 

如果这不起作用,可能是因为Program Files中的空间。 在这种情况下,Windows支持一个简短的名字。 例如PROGRA~1是一个典型的短名称,但是名字中的数字是先到先得的,所以你应该仔细检查DIR命令。

否则,您可以将您的php-win.exe可执行文件移动到不包含空格的目录中。

如果还不完全清楚,我会这样说: Windows糟透了

我有类似的问题。 从CMD运行httpd.exe,Apache应该显示错误。