Проверить mod_rewrite

Как из-под ПХП проверить, установлен ли mod_rewrite?
11 комментариев
A!e%
Сделать HTTP-вызов на самого себя и посмотреть заранее известный результат?
Сергей К.
phpinfo()
Юрко
phpinfo()

там в разделе apache2handler -> Loaded modules перечислены все загруженные модули апача.
Виктор
Я бы сделал так:

.htaccess:

<IfModule mod_rewrite.c>    SetEnv MOD_REWRITE ’ON’</IfModule>
В скрипте:

if (isset($_SERVER[’MOD_REWRITE’]) { echo «mod_rewrite is enabled.»; }

Правда в этом случае должен быть установлен mod_env :)
Илья Бирман
Выглядит красиво. А я не в теме, mod_env часто не установлен? Чаще или реже, чем mod_env?
Виктор
Юрко, не могу биться об заклад, но кажется, если PHP запускается через CGI, а не как модуль Апача, то скрипту будет недоступна информация о загруженных модулях апача.
Виктор
Я не могу точно сказать. Пока я встречал mod_env, но и mod_rewrite я встречал так же часто.

Я вообще не вижу причин, по которым не должен быть установлен mod_rewrite.
Александр Карпинский
Ты же говорил, что завязал :)

apache_get_modules()

PS, сделай пожалуйста у div.thinkbar еще и display: none, третий раз с этой просьбой обращаюсь.
Илья Бирман
Я и завязал в том смысле, что он больше не требуется. Теперь я хочу, чтобы это не нужно было в конфиге прописывать, а просто само определялось. Просьбу помню :-)
Bolk
Если тебе нужна полная проверка, то как-то так:
1) создаём директорий test с файлом index.test в нём, пусть там внутри «OK»
2) создаём в test .htaccess, внутри добавляем для расширения test mime type «x-birman/test»
3) запрашиваем через HTTP этот файл
4) если content-type==«x-birman/test», то первая фаза завершена, переходим к фазе два
5) если content-type любой другой — файлы .htaccess не работают или называются иначе
6) если HTTP-ответ не 200, то пользовательские файлы ещё и запрещены (если тебе это важно знать)

Фаза два:
1) в .htaccess пищем RewriteEngine On
2) запрашиваем /test/index.test
3) если HTTP-ответ == 200, то всё ок, mod_rewrite есть
4) любой другой ответ — mod_rewrite отсутствует или недоступен из-за каких-то других причин
Bolk
Если тебе особая точность не нужна, то можешь сразу засунуть обе строки в .htaccess и запросить index.test, тогда понадобится только один HTTP-запрос.
Bolk
Засада тут в том, что на хостинге может быть не разрешёно делать запрос через PHP, но ничего не мешает сделать его через AJAX.
Популярное