Jak sprawdzić, czy mod_rewrite jest włączony?

17

Konfiguruję środowisko dla wordpress na Apache2, na nowej instalacji Ubuntu 12.04.

Aby uruchomić przyjazne adresy URL, próbuję skonfigurować mod_rewrite. Postępowałem zgodnie z instrukcjami, które znalazłem w sieci, i użyłem a2enmod.

Teraz. po ponownym uruchomieniu apache, chciałbym sprawdzić, czy moduł jest rzeczywiście załadowany.

Polecenie, które znalazłem, aby uzyskać listę załadowanych modułów, brzmi:

apache2 -t -D DUMP_MODULES

Zwraca to jednak błąd:

apache2: zła nazwa użytkownika $ {APACHE_RUN_USER}

Jak więc faktycznie wyświetlić listę wszystkich załadowanych modułów lub w inny sposób sprawdzić, czy mod_rewrite został włączony?

użytkownik124130
źródło

Odpowiedzi:

18

KM01 miał na myśli, apachectlale to nie da ci tego, czego potrzebujesz. Będzie to kontrolować uruchamianie / zatrzymywanie / restartowanie serwera, a także podawanie niektórych informacji o stanie. Opcja pliku php działa, ale wymaga dodatkowej pracy z twojej strony. Zamiast tego, spróbuj uruchomić PHP z wiersza poleceń: $ php -i. Wyprowadza to phpinfo(), co wyprowadza, tylko w wierszu poleceń.

Możesz uzyskać listę wkompilowanych modułów poprzez uruchomienie $ apache2 -l, ale to nie pomaga w przeglądaniu dynamicznie ładowanych modułów za pomocą dyrektyw LoadModule (lub innych).

Możesz zobaczyć, które moduły są ładowane dynamicznie, patrząc na wpisy w /etc/apache2/mods-enabled/. Niektóre mają dodatkowy plik conf w tym samym katalogu do konfiguracji. Moduły te NIE są ładowane dwukrotnie. Możesz zobaczyć listę dostępnych modułów, które można ładować dynamicznie, zaglądając do /etc/apache2/mods-available/. Możesz włączyć je w linii poleceń za pomocą $ a2enmod <module_name>. Możesz je rozładować $ a2dismod <module_name>.

Po zakończeniu włączania / wyłączania musisz ponownie uruchomić apache za pomocą $ service apache2 restartlub $ apachectl graceful. Będziesz potrzebował uprawnień roota (sudo), aby wykonać większość, jeśli nie wszystkie, tej pracy.

Chris Smola
źródło
4

1) Wpisz <?php phpinfo(); ?>plik php i zapisz go, a następnie uruchom ten plik na serwerze.

2) A teraz możesz wyświetlić listę informacji, po prostu wyszukaj słowo „mod_rewrite” z menu wyszukiwania przeglądarki

3) Jeśli zostanie znaleziony w sekcji „Załadowane moduły”, ten moduł jest już załadowany, jak widać na poniższym obrazku, w przeciwnym razie musisz przejść do następnego kroku, aby włączyć moduł mod_rewrite.

źródło: http://roshanbh.com.np/2008/04/check-enable-mod_rewrite-apache.html

Richard
źródło
4

Czy zamiast apache2polecenia używasz apachectlpolecenia? Powinien być w tym samym miejscu co apache2. Lub możesz wykonać polecenie z podwyższonymi uprawnieniami za pomocąsudo apache2 -t -D DUMP_MODULES

KM.
źródło
2

Tak jak wyjaśnił @Richard, ale tak naprawdę musisz to zrobić, aby mieć plik o następującej treści:

<?php
    phpinfo();
?>

Spowoduje to wydrukowanie różnych informacji o konfiguracji apache / php. Inne przydatne rzeczy, które można tam znaleźć, gdyby zainstalowano imagick, czy nie. Wszystkie załadowane moduły Apache również tam są.

Borislav Sabev
źródło
2

Informacje PHP nie zawsze pokazują, czy jest włączone. Przepraszam!

Jednak ta strona na na przepełnienie stosu ma Ci wskazał w dobrym kierunku.

Alternatywnie, oto php, aby wymienić je wszystkie:

<?php foreach( apache_get_modules() as $module ) echo "$module<br />";  ?>
misterich
źródło
2
Masz rację, rozwiązanie phpinfo (lub poprzez rozszerzenie apache) działa tylko wtedy, gdy PHP jest skompilowane / używane jako moduł Apache. Nie w * CGI, FPM itp. Poza tym można załadować mod_rewrite (LoadModule), ale można odmówić zapisywania, zgodnie z AllowOverride i / lub Options.
lipiec
2

Po prostu utwórz mod_rewrite.phpplik w katalogu głównym i umieść w nim poniższy kod:

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

Teraz zmień nazwę swojego starego .htaccesspliku

Po prostu utwórz nowy plik .htaccess i umieść poniższy kod.

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

Teraz wciśnij zapisz.

Następnie odwiedź swoją stronę, otrzymasz wiadomość.

Awais
źródło
2

Na centos 6.5+ na terminalu

httpd -M | grep 'rewrite'

Jeśli w odpowiedzi zobaczysz moduł rewrite_module (udostępniony), oznacza to, że jest zainstalowany. Możesz usunąć grep „przepisać” i uzyskać listę wszystkich modułów do instalacji Apache.

Nicolas Guérinet
źródło
0

Po suse wpisz jako root w terminalu httpd2 -M, który daje listę załadowanych modułów. httpd2 -ldaje tylko skompilowane moduły. Działa to dla Apache 2.4

Richard
źródło