【发布时间】:2009-05-23 04:41:04
【问题描述】:
我继承了一些粗略编码的 PHP 文件,我需要以编程方式更改其输出。
为了实现这一点,我选择通过另一个 PHP 文件 rewriter.php 运行它们,它看起来大致如下:
<?php
if(!preg_match('/^([a-zA-Z0-9\-_]*)$/', $_GET['page']))
die('Incorrect page supplied.');
ob_start('changeOutput');
include($_GET['page'].'.php');
ob_end_flush();
function changeOutput ($buffer) {
...
}
?>
我使用 mod_rewrite 来强制他们运行这个文件:
RewriteEngine On
RewriteRule ^([^\.]*)\.php$ rewriter.php?page=$1
但是显示了一条错误消息,这让我相信 include() 语句受上面的 RewriteRule 影响,即它试图通过 rewriter.php 运行 rewriter.php 等等。
我想有很多方法可以解决这个问题,但我特意寻找一种方法来避免 include() 语句受到 mod_rewrite 的影响。我查看了模块文档,但找不到任何相关内容。
当然,也欢迎这种方法的替代方案。
感谢您的时间和思考。
最好的问候,
丹尼尔
【问题讨论】:
-
极不可能。错误信息又是什么?
-
您确定您的脚本是从您期望的目录运行的吗?这看起来像是被重定向了。
-
您是从每个目录配置文件 (.htaccess) 文件还是主 apache 配置文件 (httpd.conf) 文件的上下文中运行这些重写规则?
标签: php apache mod-rewrite