这已经让我发疯了。我似乎无法让 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 时,我在错误日志中收到以下行:
[错误](操作系统 193)%1 无效
Win32 应用程序。 :mod_重写:
无法启动 RewriteMap 程序
C:/dev/web/www/routing.php
配置失败
阿帕奇文档 http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritemap指的是“神奇的饼干技巧”(在“外部重写程序”标题下),它应该是指向解释器的脚本的第一行。这是我出错的地方还是我需要以不同的方式调用 RewriteMap 指令?
我怀疑神奇的 cookie 技巧(也称为 shebang)在 Windows 上是否有效。这是 UNIX/Linux 的一项功能。
您必须指定 PHP 解释器和脚本作为其参数(另请参阅http://www.webmasterworld.com/forum92/859.htm 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 很糟糕.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)