Das Apache-Modul „mod_rewrite“ kann nicht geladen werden.

Das Apache-Modul „mod_rewrite“ kann nicht geladen werden.

Ich versuche, mod_rewritedas Modul von zu verwenden Apache24 server, aber ich kann es nicht laden. Ich weiß, dass zu diesem Thema viele Fragen gestellt wurden, und ich habe sie alle durchgelesen, aber nichts scheint zu funktionieren. Dies sind die Schritte, die ich bisher befolgt habe:

  1. Die Datei CHANGED httpd.confhat folgende Änderungen vorgenommen:
    a. Unkommentiert LoadModule rewrite_module modules/mod_rewrite.so
    b. Geändert AllowOverride NoneinAllowOverride All

  2. Apache-Server neu gestartet

  3. Habe geladene Module mit dem Eingabeaufforderungsbefehl überprüft httpd -M. Dort kann ich sehen, dass das Modul mod_rewrite geladen wurde. Ich füge das Bild unten an.

Der Screenshot meiner Eingabeaufforderung

Aber nachdem ich alle diese Schritte ausgeführt habe, kann ich mod_rewrite nicht als geladenes Modul in sehen phpinfo.

Screenshot der phpinfo-Datei

Wie im obigen Bild zu sehen ist, ist kein mod_rewrite-Modul geladen. Außerdem habe ich als wilden Hack sogar versucht, URLs mithilfe einer .htaccessDatei umzuschreiben, aber das funktioniert nicht. Apache scheint .htaccessdie Datei zu ignorieren, obwohl ich sie in meinem Stammverzeichnis abgelegt habe.

 Note: I am running `PHP` as an apache module
 Using `WAMP` stack
 Using `localhost` as server

Ich brauche dieses Modul dringend zum Umschreiben von URLs. Könnt ihr mir eine andere Möglichkeit zum Laden dieses Moduls vorschlagen?

BEARBEITEN

Ich habe versucht, die URL vom virtuellen Host neu zu schreiben, da die Antwort darauf schließen lässt, dass das Modul geladen ist und weder von .htaccessnoch von abhängt info.php. Aber es erfolgt immer noch keine Umleitung. Ich füge das Virtual hostfolgende Setup hinzu:

<VirtualHost *:80>
<Directory "/Apache24/htdocs">
Options FollowSymLinks 
AllowOverride All
DirectoryIndex index.html index.php
</Directory>
ServerName localhost
DocumentRoot "/Apache24/htdocs"
ErrorLog "/Apache24/logs/error.log"
CustomLog "/Apache24/logs/access.log" combined
<directory "/Apache24/htdocs">

    <IfModule rewrite_module>
            Options +FollowSymlinks
            RewriteEngine On
    </IfModule>

    <IfModule rewrite_module>
            RewriteRule   ^working.php   fun.html
    </IfModule>

</directory>
# Rewrite Rules #####################
RewriteEngine On
RewriteRule   ^working.php   fun.html
# end Rewrite Rules #################   
</VirtualHost>

Der obige Code leitet es nicht weiter, working.phpwenn ich versuche, es auszuführen fun.html. Er sagt einfach:

Die angeforderte URL /working.php wurde auf diesem Server nicht gefunden.

Antwort1

  1. Sie benötigen .htaccess oder AllowOverride nicht, damit mod_rewrite funktioniert. Verwenden Sie es nicht, da Sie der Administrator Ihres Servers sind, da es Ihnen das Leben nur komplizierter macht und unnötigen Overhead für Ihren Server verursacht.
  2. Abgesehen vom Laden des Moduls ist die einzige Anweisung, die Sie benötigen:

    RewriteEngine ein

Extra:

  1. Erwägen Sie stattdessen Redirect/RedirectMatch (von mod_alias) für einfache Umleitungen, wenn das alles ist, was Sie brauchen.
  2. Erwägen Sie die Definition Ihrer Weiterleitungen/Umschreibungen im Virtualhost-Kontext, um zukünftige Albträume und Haarausfall in naher Zukunft zu vermeiden.

Antwort2

Aus den verlinkten Screenshots geht hervor, dass Ihr Server-Stamm (Dateisystempfad) ist C:/Apache24, Sie verweisen jedoch C:in keiner Ihrer Server-Konfigurationsanweisungen darauf? Sie müssen den vollständigen Dateisystempfad referenzieren, zum Beispiel:

<Directory "C:/Apache24/htdocs">
RewriteRule   ^working.php   fun.html

Diese Anweisung, die direkt im VirtualHost (außerhalb eines <Directory>Containers) verwendet wird, wird nie übereinstimmen. Wenn sie im Kontext eines VirtualHost (oder einer Serverkonfiguration) verwendet wird, stimmt mod_rewrite mit dem vollständigen URL-Pfad überein, was insbesonderebeinhaltetdas Schrägstrichpräfix. Dies ist ein wichtiger Unterschied zur Verwendung von mod_rewrite in einem Verzeichnis/ .htaccessKontext (wenn das Schrägstrichpräfix ausgeschlossen ist).

verwandte Informationen