### .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>
然后,您可以签入您的PHP代码
array_key_exists('HTTP_MOD_REWRITE', $_SERVER);
不知道这是否也适用于IIS(我无法检查),但可能性很大 .
7
使用此代码上传名为info.php的文件并运行它:
<?php
phpinfo();
在页面上搜索mod_rewrite,看看是否可以在Loaded Modules下找到它 .
34
不要让它如此困难,你可以简单地找到 phpinfo();
希望有帮助!
谢谢
0
通过命令行我们在centOs我们可以做到这一点
httpd -l
124
这是我当前检查是否为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);
14 回答
在“已加载模块”行的apache2handler中查看“配置” .
这很简单而且有效 .
如果您使用的是mod_php,则可以使用
apache_get_modules()
. 这将返回所有已启用模块的数组,因此要检查是否启用了mod_rewrite
,您可以这样做不幸的是,你最有可能尝试用CGI来做这件事,这让它变得有点困难 .
但是,您可以使用以下方法对其进行测试
如果上述条件的计算结果为
true
,则启用mod_write
.复制这段代码并运行它以找出答案 .
我喜欢Christian Roy's solution:
然后,您可以签入您的PHP代码
不知道这是否也适用于IIS(我无法检查),但可能性很大 .
使用此代码上传名为info.php的文件并运行它:
在页面上搜索mod_rewrite,看看是否可以在Loaded Modules下找到它 .
不要让它如此困难,你可以简单地找到
phpinfo();
希望有帮助!
谢谢
通过命令行我们在centOs我们可以做到这一点
这是我当前检查是否为Apache和IIS启用了Mod_rewrite的方法
它可以在我的本地计算机上运行,也可以在基于IIS的webhost中运行 . 但是,在特定的apache服务器上,它对Apache没有用,因为apache_get_modules()被禁用但是mod_rewrite在该服务器中启用了 .
您可以获得已安装apache modules的列表,并进行检查 . 也许您可以通过搜索其.dll(或linux等效)文件来检查它是否已安装 .
两行代码:
通过exec()的另一种方法 .
如果加载了
mod_rewrite
,它将在输出中返回"rewrite_module" .关于mod重写的另一个想法,实际上更多是一个肮脏的黑客,服务器依赖并不是必须的php问题:为什么不,如果你有可能性,创建一个测试目录,将.htaccess重写为test.php,调用目录通过http并检查你是否得到了你在test.php中的预期结果 .
的确,很脏 .
使用此功能:
如何重定向到已知文件,然后检查该重定向是否实际上与curl一起使用?