Как проверить, включен ли mod_rewrite?

17

Я устанавливаю среду для WordPress на Apache2, на новой установке Ubuntu 12.04.

Чтобы заставить работать дружественные URL-адреса, я пытаюсь настроить mod_rewrite. Я следовал инструкциям, которые нашел в сети, и использовал a2enmod.

Сейчас. после перезапуска apache я хотел бы проверить, действительно ли загружен модуль.

Команда, которую я нашел для получения списка загруженных модулей, такова:

apache2 -t -D DUMP_MODULES

Тем не менее, это возвращает ошибку:

apache2: неверное имя пользователя $ {APACHE_RUN_USER}

Итак, как мне на самом деле перечислить все загруженные модули или проверить, включен ли mod_rewrite?

user124130
источник

Ответы:

18

КМ01 имел ввиду, apachectlно это не даст вам того, что вам нужно. Это будет контролировать запуск / остановку / перезапуск сервера, наряду с предоставлением некоторой информации о состоянии. Опция php file работает, но требует дополнительной работы с вашей стороны. Вместо этого попробуйте запустить PHP из командной строки: $ php -i. Это выводит то phpinfo(), что выводит, только в командной строке.

Вы можете получить список скомпилированных модулей, запустив их $ apache2 -l, но это не помогает для просмотра динамически загружаемых модулей с помощью директив LoadModule (или других).

Вы можете увидеть, какие модули загружаются динамически, просмотрев записи в /etc/apache2/mods-enabled/. У некоторых есть дополнительный файл conf в том же каталоге для конфигурации. Эти модули НЕ загружаются дважды. Вы можете увидеть список доступных модулей для динамической загрузки, заглянув в /etc/apache2/mods-available/. Вы можете включить их в командной строке с помощью $ a2enmod <module_name>. Вы можете разгрузить их $ a2dismod <module_name>.

Когда вы закончите включение / отключение, вы должны перезапустить apache с помощью $ service apache2 restartили $ apachectl graceful. Вам понадобятся привилегии root (sudo) для выполнения большей части, если не всей, этой работы.

Крис Смола
источник
4

1) Введите <?php phpinfo(); ?>php-файл, сохраните его и запустите этот файл на сервере.

2) И теперь вы можете получить список информации, просто поиск по слову «mod_rewrite» из меню поиска браузера

3) Если он находится в разделе «Загруженные модули», то этот модуль уже загружен, как показано на рисунке ниже, в противном случае вам нужно перейти к следующему шагу для включения модуля mod_rewrite.

источник: http://roshanbh.com.np/2008/04/check-enable-mod_rewrite-apache.html

Ричард
источник
4

Вместо использования apache2команды, у вас есть apachectlкоманда? Это должно быть в том же месте, что и apache2. Или вы можете выполнить команду с повышенными привилегиями, используяsudo apache2 -t -D DUMP_MODULES

KM.
источник
2

Точно так же, как объяснил @Richard, но для этого вам нужно иметь файл со следующим содержимым:

<?php
    phpinfo();
?>

Это распечатывает различную информацию о вашей конфигурации apache / php. Другие полезные вещи, которые вы найдете там, будут, если Imagick установлен или нет. Все загруженные модули Apache также есть.

Борислав Сабев
источник
2

Информация PHP не всегда показывает вам, включена она или нет. Сожалею!

Тем не менее, эта страница на Переполнение стека действительно направит вас в правильном направлении.

Кроме того, вот несколько php, чтобы перечислить их все:

<?php foreach( apache_get_modules() as $module ) echo "$module<br />";  ?>
misterich
источник
2
Вы правы, решение phpinfo (или через расширение apache) работает, только если PHP скомпилирован / используется как модуль Apache. Не в * CGI, FPM и т. Д. Кроме того, mod_rewrite может быть загружен (LoadModule), но перезапись может быть запрещена, в соответствии с AllowOverride и / или Options.
Julp
2

Просто создайте mod_rewrite.phpфайл в корневом каталоге и поместите в него код ниже:

<?php 
echo
"Mod_rewrite is activated!"
; ?>

Теперь переименуйте свой старый .htaccessфайл

Просто создайте новый файл .htaccess и разместите приведенный ниже код.

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

Теперь нажмите сохранить.

Тогда зайдите на свой сайт и получите сообщение.

Awais
источник
2

На Centos 6.5+ в терминальном типе

httpd -M | grep 'rewrite'

Если в ответе вы видите rewrite_module (shared), это означает, что он установлен. Вы можете удалить grep 'rewrite' и получить список всех модулей для установки Apache.

Николя Геренет
источник
0

При использовании suse введите root в терминале httpd2 -M, что даст список загруженных модулей. httpd2 -lдает только скомпилированные модули. Это работает для Apache 2.4

Ричард
источник