How to check if mod_rewrite is enabled in php? How to check if mod_rewrite is enabled in php? apache apache

How to check if mod_rewrite is enabled in php?


If you're using mod_php, you can use apache_get_modules(). This will return an array of all enabled modules, so to check if mod_rewrite is enabled, you could simply do

in_array('mod_rewrite', apache_get_modules());

Unfortunately, you're most likely trying to do this with CGI, which makes it a little bit more difficult.

You can test it using the following, though

strpos(shell_exec('/usr/local/apache/bin/apachectl -l'), 'mod_rewrite') !== false

If the above condition evaluates to true, then mod_write is enabled.


Copy this piece of code and run it to find out.


<?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>


I like Christian Roy's solution:

###  .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>

Then, you can check in your PHP code for

    array_key_exists('HTTP_MOD_REWRITE', $_SERVER);

No idea if this works also with IIS (I have no way to check) but the odds are good.