これを使って:
.htaccessで
<IfModule mod_rewrite.c>
# inform php that mod_rewrite is enabled
SetEnv HTTP_MOD_REWRITE on
...
PHPの場合:
$mod_rewrite = FALSE;
if (function_exists("apache_get_modules")) {
$modules = apache_get_modules();
$mod_rewrite = in_array("mod_rewrite",$modules);
}
if (!isset($mod_rewrite) && isset($_SERVER["HTTP_MOD_REWRITE"])) {
$mod_rewrite = ($_SERVER["HTTP_MOD_REWRITE"]=="on" ? TRUE : FALSE);
}
if (!isset($mod_rewrite)) {
// last solution; call a specific page as "mod-rewrite" have been enabled; based on result, we decide.
$result = file_get_contents("http://somepage.com/test_mod_rewrite");
$mod_rewrite = ($result=="ok" ? TRUE : FALSE);
}
最初の(apache)はサーバーによって無効にでき、2番目のカスタムのものはmod_envがインストールされている場合にのみ$_SERVERに存在します。だから私が最善の解決策だと思うのは、あなたの.htaccessにあなたのファイル(単に「ok」を返す)を指す偽のURLリダイレクトを作成し、.phpからのリダイレクトでそれを呼び出すことです。「ok」を返す場合は、クリーンURLを使用できます....htaccessのリダイレクトコードは次のようになります。
<IfModule mod_rewrite.c>
...
RewriteEngine on
# fake rule to verify if mod rewriting works (if there are unbearable restrictions..)
RewriteRule ^test_mod_rewrite/?$ index.php?type=test_mod_rewrite [NC,L]