Wie teste ich, ob mod_rewrite aktiviert ist?

17

Ich richte eine Umgebung für WordPress auf Apache2 ein, auf einer neuen Installation von Ubuntu 12.04.

Um benutzerfreundliche URLs zum Laufen zu bringen, versuche ich, mod_rewrite einzurichten. Ich habe einige Anweisungen befolgt, die ich im Internet gefunden habe, und habe a2enmod verwendet.

Jetzt. Nach dem Neustart von Apache möchte ich überprüfen, ob das Modul tatsächlich geladen ist.

Der Befehl, den ich zum Abrufen einer Liste geladener Module gefunden habe, lautet wie folgt:

apache2 -t -D DUMP_MODULES

Dies gibt jedoch einen Fehler zurück:

apache2: falscher Benutzername $ {APACHE_RUN_USER}

Wie liste ich nun alle geladenen Module auf oder überprüfe auf andere Weise, ob mod_rewrite aktiviert wurde?

user124130
quelle

Antworten:

18

KM01 meinte apachectlaber das wird dir nicht das geben was du brauchst. Hiermit wird das Starten / Stoppen / Neustarten des Servers sowie einige Statusinformationen gesteuert. Die PHP-Datei-Option funktioniert, erfordert aber zusätzliche Arbeit von Ihrer Seite. Stattdessen versucht PHP von der Kommandozeile ausgeführt wird : $ php -i. Dies gibt was aus phpinfo(), nur auf der Kommandozeile.

Sie können durch Ausführen eine Liste der kompilierten $ apache2 -lModule abrufen. Dies hilft jedoch nicht, wenn Sie dynamisch geladene Module mithilfe der LoadModule-Direktiven (oder anderer Direktiven) anzeigen.

Sie können sehen, welche Module dynamisch geladen werden, indem Sie sich die Einträge in ansehen /etc/apache2/mods-enabled/. Einige haben eine zusätzliche Konfigurationsdatei im selben Verzeichnis für die Konfiguration. Diese Module werden NICHT zweimal geladen. Sie können eine Liste der verfügbaren Module anzeigen, die dynamisch geladen werden können, indem Sie nachsehen /etc/apache2/mods-available/. Sie können sie in der Befehlszeile mit aktivieren $ a2enmod <module_name>. Sie können sie mit entladen $ a2dismod <module_name>.

Wenn Sie mit dem Aktivieren / Deaktivieren fertig sind, müssen Sie Apache mit $ service apache2 restartoder neu starten $ apachectl graceful. Sie benötigen root (sudo) -Privilegien, um die meisten, wenn nicht alle dieser Arbeiten ausführen zu können.

Chris Smola
quelle
4

1) Geben Sie <?php phpinfo(); ?>eine PHP-Datei ein und speichern Sie diese und führen Sie diese Datei auf dem Server aus.

2) Und jetzt können Sie die Liste der Informationen, suchen Sie einfach das Wort "mod_rewrite" aus dem Suchmenü des Browsers

3) Befindet sich das Modul im Abschnitt "Geladene Module", ist es bereits geladen, wie in der folgenden Abbildung dargestellt. Andernfalls müssen Sie mit dem nächsten Schritt fortfahren, um das Modul "mod_rewrite" zu aktivieren.

Quelle: http://roshanbh.com.np/2008/04/check-enable-mod_rewrite-apache.html

Richard
quelle
4

apache2Haben Sie den apachectlBefehl, anstatt ihn zu verwenden ? Es sollte sich am selben Ort befinden wie apache2. Oder Sie können den Befehl mit erhöhten Rechten mithilfe von ausführensudo apache2 -t -D DUMP_MODULES

KM.
quelle
2

Genau wie @Richard erklärt hat, aber was Sie tatsächlich tun müssen, um dies zu erreichen, ist eine Datei mit folgendem Inhalt:

<?php
    phpinfo();
?>

Dies gibt verschiedene Informationen über Ihre Apache / PHP-Konfiguration aus. Andere nützliche Dinge, die Sie dort finden, wären, wenn imagick installiert ist oder nicht. Alle geladenen Apache-Module sind ebenfalls vorhanden.

Borislav Sabev
quelle
2

PHP-Informationen zeigen nicht immer an, ob sie aktiviert sind oder nicht. Es tut uns leid!

Diese Seite über "Stapelüberlauf" weist Sie jedoch in die richtige Richtung.

Alternativ können Sie hier einige PHP-Dateien herunterladen, um sie alle aufzulisten:

<?php foreach( apache_get_modules() as $module ) echo "$module<br />";  ?>
Misterich
quelle
2
Sie haben Recht, phpinfo (oder über die Apache-Erweiterung) funktioniert nur, wenn PHP als Apache-Modul kompiliert / verwendet wird. Nicht in * CGI, FPM usw. Außerdem könnte mod_rewrite geladen werden (LoadModule), aber das Umschreiben könnte gemäß AllowOverride und / oder Options verweigert werden.
11.
2

Erstellen mod_rewrite.phpSie einfach eine Datei in Ihrem Stammverzeichnis und fügen Sie den folgenden Code ein:

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

Benennen Sie nun Ihre alte .htaccessDatei um

Erstellen Sie einfach eine neue .htaccess-Datei und geben Sie den folgenden Code ein.

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

Drücken Sie jetzt Speichern.

Dann besuchen Sie Ihre Website, Sie erhalten eine Nachricht.

Awais
quelle
2

Auf Centos 6.5+ am Terminaltyp

httpd -M | grep 'rewrite'

Wenn Sie in der Antwort rewrite_module (shared) sehen, bedeutet dies, dass es installiert ist. Sie können grep 'rewrite' entfernen und die Liste aller Module für Ihre Apache-Installation abrufen.

Nicolas Guérinet
quelle
0

Geben Sie als root im Terminal suse ein httpd2 -M, um eine Liste der geladenen Module anzuzeigen. httpd2 -lgibt nur die in bausteinen kompilierten an. Dies funktioniert für Apache 2.4

Richard
quelle