在CGI-MODE中使用PHP自动预结束文件,无需修改PHP.ini

在CGI-MODE中使用PHP自动预结束文件,无需修改PHP.ini,php,.htaccess,Php,.htaccess,我需要使用.htaccess对文件夹中的所有请求执行自动预编\u文件。 问题是,PHP在CGI模式下运行,我不能修改任何其他PHP文件或PHP.ini。 这就是为什么我没有在.htaccess文件上使用php\u value auto\u prepend\u file”/testing.php“ 在本规范下有什么方法可以做到这一点吗?假设您的服务器上启用了mod_rewrite,您可以执行以下操作 在.htaccess中添加以下内容: RewriteEngine on RewriteCond %

我需要使用
.htaccess
对文件夹中的所有请求执行
自动预编\u文件
。 问题是,PHP在CGI模式下运行,我不能修改任何其他PHP文件或PHP.ini。 这就是为什么我没有在
.htaccess
文件上使用
php\u value auto\u prepend\u file”/testing.php“


在本规范下有什么方法可以做到这一点吗?

假设您的服务器上启用了mod_rewrite,您可以执行以下操作

在.htaccess中添加以下内容:

RewriteEngine on
RewriteCond %{REQUEST_URI} !/testing\.php
RewriteRule ^(.*)$ /testing.php?url=$1 [L]
在testing.php中,执行您想执行的任何操作。在文件末尾,执行以下操作:

$file = $_GET['url'];
if( file_points_to_sensible_location( $file ) && file_exists( $file ) ) {
  require( $file );
}
file\u exist
是一个现有函数<代码>文件指向合理的位置(…)是您必须编写的内容。如果你搞砸了,有人可能会执行或转储你不想公开的文件


编辑:通过向
.htaccess
文件添加附加条件,可以防止某些请求发生这种情况。例如:
RewriteCond%{REQUEST\u URI}!\。(jpg | jpeg | png | gif | css | js | unicorn)$
将阻止在以该扩展名结尾的文件上执行testing.php。作为
RewriteCond%{REQUEST_URI}\.php$
的条件只允许它在以.php结尾的请求上工作

要使它与wordpress一起工作,您可以使用
require(“index.php”)
而不是
require($file)
。由于url是相同的,wordpress仍然可以工作


要使其与其他重写规则一起工作,您需要将重写逻辑移动到
testing.php
。基本上,您将
$file
更改为包含重写后应该包含的内容,并包含/要求该内容。从
.htaccess

中删除相应的规则我在www root dir中只有一个php文件,我没有权限编辑除.htaccess文件之外的任何文件,当然还有我在root dir上的php文件。谢谢你的回答,但我需要一些与任何请求更兼容的文件。在这种情况下,例如,如果您通过图像请求,它将在屏幕上打印内容而不是图像。如果您的意思是在请求图像/css/js文件时不想执行
/testing.php
,则可以在.htaccess(
RewriteCond%{request\u URI}!\(jpg | jpeg | png | gif | css | js unicorn)$
)中排除这些扩展名。或者,您只能在其他php脚本之前执行它(
RewriteCond%{REQUEST\u URI}\.php$
)。这是基于您在问题中的要求的基本概念。我真的猜不出你还有什么其他的要求,但这不适用于像wordpress博客中的那些“SEO”重写规则。其想法是强制www root.htaccess文件在任何其他文件之前执行我的php。我想对我的站点的任何请求运行一个自定义解析和日志记录过程。但是我不能访问任何配置文件,比如httpd.conf或php.ini。我不能在这里测试它,但是如果它是wordpress url,你不能只包含index.php吗?我不想被固定为只使用wordpress。