首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache mod_rewrite:在Windows上使用RewriteMap脚本的RewriteMap指令

Apache mod_rewrite:在Windows上使用RewriteMap脚本的RewriteMap指令
EN

Stack Overflow用户
提问于 2010-08-18 20:01:39
回答 2查看 4K关注 0票数 6

这让我发疯了。我似乎无法让RewriteMap指令用于windows上的php脚本。下面是来自我的httpd.conf文件的相关片段:

代码语言:javascript
复制
<IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteMap router "prg:C:/dev/web/www/routing.php"
        RewriteRule (.*) ${router:$1}
</IfModule>

我的简单php脚本如下所示:

代码语言:javascript
复制
#!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时,我在错误日志中得到了以下行:

错误%1不是有效的Win32应用程序。:mod_rewrite:无法启动RewriteMap程序C:/dev/web/www/routing.php配置失败

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-18 20:24:24

我怀疑神奇的曲奇把戏,也被称为shebang,能在Windows上工作。这是UNIX/Linux特性。

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

代码语言:javascript
复制
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可执行文件移动到不包含空格的目录中。

如果还不完全清楚的话,我要说的是:窗户太烂了。

票数 6
EN

Stack Overflow用户

发布于 2011-04-16 15:23:47

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3516188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档