我想知道是否有可能在PHP
中检查Apache和IIS上是否启用了mod_rewrite
。
ModRewrite适用于IIS。 在这里
进行检查。
因此,我正在寻找一个检查 Apache 和 IIS 上的 mod_rewrite
的PHP脚本。
有人知道这样的脚本或可以编写一个吗? 特别是适用于Microsoft IIS 。
谢谢!
我想知道是否有可能在PHP
中检查Apache和IIS上是否启用了mod_rewrite
。
ModRewrite适用于IIS。 在这里
进行检查。
因此,我正在寻找一个检查 Apache 和 IIS 上的 mod_rewrite
的PHP脚本。
有人知道这样的脚本或可以编写一个吗? 特别是适用于Microsoft IIS 。
谢谢!
exec()
。exec('/usr/bin/httpd -M | find "rewrite_module"',$output);
mod_rewrite
,它将在输出中返回"rewrite_module"。function apache_module_exists($module)
{
return in_array($module, apache_get_modules());
}
实际上,仅仅因为一个模块被加载,并不意味着你放置在 .htaccess 目录中的指令已经启用。你可能需要知道的是:重写是否起作用?唯一确定的方法是进行实际测试:将一些测试文件放在服务器上,并使用 HTTP 请求它。
好消息是:我创建了 一个库 来完成这个任务(检测各种 .htaccess 的功能)。使用这个库,你只需要这样做:
require 'vendor/autoload.php';
use HtaccessCapabilityTester\HtaccessCapabilityTester;
$hct = new HtaccessCapabilityTester($baseDir, $baseUrl);
if ($hct->rewriteWorks()) {
// rewriting works
}
(不要使用$baseDir和$baseUrl,您必须提供测试文件将放置的路径以及相应的URL以便访问)
如果您只想知道模块是否已加载,可以执行以下操作:
if ($hct->moduleLoaded('rewrite')) {
// mod_rewrite is loaded (tested in a real .htaccess by using the "IfModule" directive)
}
这个库可以在这里找到:https://github.com/rosell-dk/htaccess-capability-tester