Apache Mod_rewrite:使用Windows Machine上的PHP脚本RewriteMap指令
-
29-09-2019 - |
题
这让我发疯了。我似乎无法让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.php配置失败
Apache文档 指的是“魔术饼干技巧”(在“外部重写程序”标题下),该标题应该是脚本的第一行,应该指向解释器。这是我出错的地方还是我需要以不同的方式调用RewriteMap指令?
解决方案
我怀疑魔术饼干技巧是否可以在窗户上起作用。这是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执行移动到不包含空格的目录。
如果还没有完全清楚,我会这么说: 窗户很烂.
其他提示
我有类似的问题。从CMD运行httpd.exe,Apache应显示错误。
不隶属于 StackOverflow