Tie*_*ies 148 php apache iis mod-rewrite
我想知道是否有可能检查是否mod_rewrite在Apache和IIS上启用了PHP.
存在用于IIS的ModRewrite.检查一下here.
所以,我正在寻找一个mod_rewrite在Apache和IIS上检查的PHP脚本.
有谁知道这样的脚本或可以写一个?
特别是对于Microsoft IIS.
谢谢!
kba*_*kba 124
如果你正在使用mod_php,你可以使用apache_get_modules().这将返回所有已启用模块的数组,因此要检查是否mod_rewrite已启用,您可以这样做
in_array('mod_rewrite', apache_get_modules());
Run Code Online (Sandbox Code Playgroud)
不幸的是,你最有可能尝试用CGI来做这件事,这让它变得有点困难.
但是,您可以使用以下方法对其进行测试
strpos(shell_exec('/usr/local/apache/bin/apachectl -l'), 'mod_rewrite') !== false
Run Code Online (Sandbox Code Playgroud)
如果上述条件评估为true,则mod_write启用.
Sha*_*ran 91
<?php
if(!function_exists('apache_get_modules') ){ phpinfo(); exit; }
$res = 'Module Unavailable';
if(in_array('mod_rewrite',apache_get_modules()))
$res = 'Module Available';
?>
<html>
<head>
<title>A mod_rewrite availability check !</title></head>
<body>
<p><?php echo apache_get_version(),"</p><p>mod_rewrite $res"; ?></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
a.l*_*l.e 51
### .htaccess
<IfModule mod_rewrite.c>
# Tell PHP that the mod_rewrite module is ENABLED.
SetEnv HTTP_MOD_REWRITE On
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# The rest of your rewrite rules here
</IfModule>
Run Code Online (Sandbox Code Playgroud)
然后,您可以签入您的PHP代码
array_key_exists('HTTP_MOD_REWRITE', $_SERVER);
Run Code Online (Sandbox Code Playgroud)
不知道这是否也适用于IIS(我无法检查),但可能性很大.
小智 35
使用此代码上传名为info.php的文件并运行它:
<?php
phpinfo();
Run Code Online (Sandbox Code Playgroud)
在页面上搜索mod_rewrite,看看是否可以在Loaded Modules下找到它.
h0m*_*yun 11
通过命令行我们在centOs我们可以做到这一点
httpd -l
Run Code Online (Sandbox Code Playgroud)
<?php
phpinfo();
?>
Run Code Online (Sandbox Code Playgroud)
在"已加载模块"行的apache2handler中查看"配置".
这很简单而且有效.
<?php foreach( apache_get_modules() as $module ) echo "$module<br />"; ?>
Run Code Online (Sandbox Code Playgroud)
这是我当前检查是否为Apache和IIS启用了Mod_rewrite的方法
/**
* --------------------------------------------------------------
* MOD REWRITE CHECK
* --------------------------------------------------------------
* - By A H Abid
* Define Constant for MOD REWRITE
*
* Check if server allows MOD REWRITE. Checks for both
* Apache and IIS.
*
*/
if( function_exists('apache_get_modules') && in_array('mod_rewrite',apache_get_modules()) )
$mod_rewrite = TRUE;
elseif( isset($_SERVER['IIS_UrlRewriteModule']) )
$mod_rewrite = TRUE;
else
$mod_rewrite = FALSE;
define('MOD_REWRITE', $mod_rewrite);
Run Code Online (Sandbox Code Playgroud)
它可以在我的本地计算机上运行,也可以在基于IIS的webhost中运行.但是,在特定的apache服务器上,它对Apache没有用,因为apache_get_modules()被禁用但是mod_rewrite在该服务器中启用了.