Ska*_*ags 6 php windows apache mod-rewrite 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>
Run Code Online (Sandbox Code Playgroud)
我的简单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";
}
?>
Run Code Online (Sandbox Code Playgroud)
当我尝试启动Apache时,我在错误日志中获得以下行:
[错误](OS 193)%1不是有效的Win32应用程序.:mod_rewrite:无法启动RewriteMap程序C:/dev/web/www/routing.php配置失败
apache文档引用了"魔术cookie技巧"(在"外部重写程序"标题下),它应该是应该指向解释器的脚本的第一行.这是我出错的地方还是需要以不同的方式调用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"
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,可能是因为空间Program Files.在这种情况下,Windows支持短名称.例如PROGRA~1,一个典型的短名称,但名称中的数字是按先到先得的原则分配的,因此您应该仔细检查该DIR命令.
否则,您可以将php-win.exe可执行文件移动到不包含空格的目录.
如果还不完全清楚,我会这样说: Windows很糟糕.
| 归档时间: |
|
| 查看次数: |
3775 次 |
| 最近记录: |