Wie aktiviere mod_rewrite?
Ich weiß, diese Frage wurde schon mehrfach gefragt. Aber ich kann nicht ankommen es zu wirken.
Ich installierte Apache2 in meinem Ubuntu-server kann ich auch bestätigen, dass mod_rewrite installiert ist mit phpinfo();. Ich habe auch eine Datei genannt .htaccess in meinem root-Ordner(/var/www/.htaccess). In meiner .htaccess-Datei habe ich den folgenden code einfügen:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^.*$ test.php
Also wird alles umgeleitet test.php
Aber es funktioniert immer noch nicht. So ich habe in meiner httpd.conf-Datei unter /etc/apache2. Es ist völlig leer, ohne code-Zeilen sein (Dies scheint ein wenig seltsam für mich)?! Aber die überprüfung in Stackoverflow Antworten sollte es sein, mindestens den folgenden code in httpd.conf:
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Satisfy all
</Directory>
So, ich fügen Sie diesen code in httpd.conf. Und Apache neu gestartet mit sudo /etc/init.d/apache restart
. Und es funktioniert immer noch nicht?
Habe ich auch getestet, die Datei zu öffnen /sites-enabled/000-default und /sites-available/default,, wo alle virtual-host-Einstellungen liegt, und ändern Sie unter dem Verzeichnis /var/www
und /
auf AllowOverride All. Das mod_rewrite funktioniert immer noch nicht. Kann bitte jemand mir helfen. Dieses problem wurde meine Backen Nüsse für eine Weile.
Auch, meine apache2.conf-Datei funktioniert nicht. Ich habe versucht zu schreiben, som Quatsch. Und es gibt mir immer noch die normalen Ergebnis anstelle von http 500-Fehlermeldung,
InformationsquelleAutor einstein | 2011-12-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alle Vorschläge von Niels Bom sind die intelligentesten diejenigen, die (glaube ich). Aber ich möchte hinzufügen, dies als ersten Vorschlag: versuchen Sie zu starten und stoppen Sie den apache über das Ubuntu Befehl: wenn dann soll es gestoppt werden, stellen Sie sicher es aufgehört ie überprüfen Sie Ihre lokalen Seite nicht mehr zeigen.
/etc/apache2/
. Es sollteapache2.conf conf.d envvars httpd.conf mods-available mods-enabled ports.conf sites-available sites-enabled
mods-enabled
wo Sie finden, wenn die mods aktiviert sind, wenn ja, dann kannst du gehen, ansonsten werfen Sie einen Blick auf die anderen Antworten zur Aktivierung von modrewritesites-enabled
: es ist, wo Sie finden die Websites, die sind... (was wohl?) aktiviert. Es sollte diedefault
website.<virtualhost>
-</virtualhost>
- tags (natürlich).Bitte sagen Sie mir, was Los ist, und ich würde froh sein zu aktualisieren, meine Frage entsprechend.
InformationsquelleAutor Olivier Pons
wenn Sie diesen Befehl ausführen,
ubuntu-Ausgabe whethere es aktiviert ist oder bereits ausgeführt wird.
Das wird nicht funktionieren. Die configs müssen neu geschrieben werden muss von hand.
InformationsquelleAutor bingjie2680
, Weil dieser thread Reihen sehr hoch auf google, hier eine andere Lösung:
, WAS DAS PROBLEM VERURSACHT ?
Es ist dadurch verursacht, dass die standard-definition in der apache einfach alle Blöcke .htaccess-Sachen. Seriouslsy. Dies scheint der erste Staat in Ubuntu 12.04 LTS.
LÖSUNG
In /etc/apache2/sites-available/default (das ist eine Datei, kein Ordner) es gibt einen code-block wie
Hier sollten Sie ändern
zu
WICHTIG
Müssen Sie diese änderungen mit sudo-Rechte, anotherwise Ubuntu wird nicht speichern Sie die Datei. Nach einem NEUSTART Ihres .htaccess-Kram funktionieren sollte. Zu testen .htaccess setzen Sie einfach einige Nonsens-text und surfen auf localhost oder 127.0.0.1 -> Wenn Sie sehen, die "internal server error": voila! Entfernen Sie den Unsinn und Sie sind bereit zu gehen.
InformationsquelleAutor Sliq
Okay, let ' s check Annahmen:
Setzen, Schwachsinn in deiner Apache-config-Dateien (und Apache neu starten zu lassen, wirksam werden), muss der Apache "meckern" auf neu starten? Dann versucht er zu laden dieser Dateien. Versuchen Sie, diese für jeden Apache-config-Datei, die Sie finden können. Sie haben nun eine vollständige Liste der Apache-config-Dateien, die geladen werden.
legte Unsinn in deine htaccess, die Seite neu laden, bekommen Sie einen 500-Fehler? Wenn nicht, die htaccess ist nicht immer geladen.
Setzen die meisten basic-mod_rewrite-Anweisung in der htaccess:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^.*$ test.html
Sollte dieses schreiben jeden Wunsch zu test.html.
Versuchen Sie dies und geben Sie uns die Ergebnisse.
Wenn der Apache nicht beschweren, auf neu starten, wenn Sie haben Unsinn im Apache-config-Datei, dann der Apache nicht Lesen, dass der config-Datei. Könntest du uns eine komplette Liste von allen Dateien und deren Inhalt in /etc/apache2/ ?
Nur um klar zu sein: mit "Apache-config-Datei" meine ich eine Datei in /etc/apache2/ und nicht Ihr .htaccess.
InformationsquelleAutor Niels Bom
Bitte überprüfen Sie
/etc/apache2/apache2.conf
Ich checke wieder, und in meiner installation der directory-Direktive ist in: /etc/apache2/mods-available/alias.conf. stellen Sie sicher, dass das alias-Modul aktiviert ist
Ich habe diese Datei? Was soll ich tun?
InformationsquelleAutor Moshe Shaham
In Ihrer Frage, die Sie erwähnt haben,
So, bevor noch mehr Sachen zum probieren mit .conf-Dateien,
laufen
strace -o somefilename.txt sudo /etc/init.d/apache restart
strace - trace der Systemaufrufe und Signale : strace(1) - Linux man page.
Den
-o somefilename.txt
Teil legt die Ausgabe vonstrace
insomefilename.txt
. Öffnen Sie die text-Datei und Suche nachhttpd.conf
. Sie sollten in der Lage sein zu sehen, code ähnlich:Den Pfad zu
httpd.conf
wird ersetzt durch den Pfad zu Ihrer Standard -httpd.conf
Wenn Sie eine finden, dann öffnen, dass
httpd.conf
und dort änderungen vornehmen. Sonst, einhttpd.conf
ist nicht immer geladen.Wenn später der Fall ist, versuchen Sie:
Überprüfen Sie auch für
NameVirtualHost *:80
und stellen Sie sicher, es ist nicht kommentiert.InformationsquelleAutor ThinkingMonkey