我已经继承了大量严格编码的PHP文件,其输出需要以编程方式进行修改。PHP include()受mod_rewrite影响
要做到这一点,我选择了通过其他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的影响。我浏览了模块文档,但找不到任何相关的内容。
当然,这种方法的替代方案也是受欢迎的。
谢谢你的时间和想法。
最好的问候,
丹尼尔
极不可能。又有什么错误信息? – Gleb 2009-05-22 18:18:11
您确定您的脚本正在从您期望的目录运行吗?这可能看起来像被重定向。 – Dave 2009-05-22 18:27:17
你正在从每个目录conf文件(.htaccess)文件或主apache conf文件(httpd.conf文件)的上下文中运行这些重写规则。conf)文件? – 2009-05-22 20:25:49