Ich habe in der Dokumentation von Codeigniter nach dem Entfernen von index.php
aus der URL beim Zugriff auf verschiedene Ansichten gesucht, der Code zeigt, wie man es mit Apache entfernen kann:
Wenn ich jedoch zu http://localhost/code/home
gehe, bekomme ich Folgendes:
Die angeforderte URL / code / home wurde auf diesem Server nicht gefunden.
Aber der Zugriff auf http://localhost/code/index.php/home
funktioniert gut, wie kommt es, dass es für mich nicht funktioniert?
Ich bin auf einem Mac OS X Snow Leopard mit dem Verzeichnis Sites
: /Users/~myusername~/Sites/code
, und ich verwende keine Software, d. h. MAMP, XAMPP.
BEARBEITEN
Für den Befehl sudo /usr/sbin/apachectl -k restart -S
bekomme ich das:
Sie müssen "http: // localhost / code" als "code.local" (in meinem Beispiel) angeben. Angenommen, Ihr Setup unter Mac OS X Snow Leopard ist dasselbe wie bei mir.
Sie sollten die folgenden Zeilen zu "/etc/apache2/extra/httpd-vhosts.conf" hinzufügen
%Vor%Stellen Sie außerdem sicher, dass es in "/etc/apache2/httpd.conf"
unkommentiert ist %Vor%Dann fügst du code.local zu deinem "/ etc / hosts" hinzu, was wie folgt aussehen sollte
%Vor%Starten Sie dann Ihren Apache "/ usr / sbin / apachectl -k restart" neu.
Sie müssen möglicherweise sudo ausführen, wenn Sie kein Superuser sind. Hoffe, das hilft.
BEARBEITEN: Um zu überprüfen, ob Ihr virtueller Host funktioniert. Führe das aus sudo / usr / sbin / apachectl -k Neustart -S Um zu sehen, ob code.local als einer Ihrer virtuellen Hosts hinzugefügt wurde.
Versuchen Sie dann, auf code.local / index.php / welcome und code.local / welcome zuzugreifen, um zu überprüfen, ob es funktioniert.
Um index.php von der URL zu entfernen, fügen Sie einfach
hinzu %Vor%in der .htaccess-Datei und verschieben Sie die .htaccess-Datei in die Nähe von index.php location
%Vor%in der config.php im Konfigurationsverzeichnis
%Vor% Da sich Ihre CI-Installation nicht in Ihrem Dokumentenstammverzeichnis befindet, sollten Sie RewriteBase /code/
hinzufügen, damit es funktioniert.
Dies ist meine .htacces, die ich für eine CI-Installation verwende (das ist etwas ausgeklügelter als das, das mit der offiziellen Dokumentation geliefert wird):
%Vor% Stellen Sie außerdem sicher, dass Ihr httpd mit der .htaccess-Datei umgehen kann. Überprüfen Sie in httpd.conf, ob eine Zeile mit AllowOverride all
in einem <Directory></Directory>
-Element
Hoffen Sie diese Hilfe
Erstellen Sie eine .htacess-Datei im Stammordner Ihres Web-Verzeichnisses in Code-Signierer mit dem obigen Code. Sie können index.php entfernen, wenn ein URL-Link index.php enthält, so dass die Seite ohne Fehler angezeigt wird. Oder wenn URL nicht index.php enthält, wird die Seite ohne index.php in URL angezeigt.
Sie alle URI Teile sind neu geschrieben, also zeigt es auf /index.php/code/home. Der beste Weg, dies zu tun, ist das Einrichten von Mappings, z. Ссылка , um auf Ihren / Users / ~ myusername ~ / Sites / code zu zeigen, dann werden alle Ihre Anfragen auf der Stammebene aufgelöst und alles wird so funktionieren sollte.
EDIT: Downvoters scheinen Ignoranten zu sein, aber vergiss es ..
Hier ist, was Ihr Code jetzt macht:
%Vor%Wie ich schon sagte, wäre der GUTE Weg das Host-Mapping, also bekommt man alles auf der Stammebene (was GUT ist, wie es am wahrscheinlichsten ist, dass man es so auf dem Produktionsserver haben wird ...) und das wird den Trick machen ohne Änderungen in .htaccess.
Ansonsten können Sie Francescos Ratschlag mit RewriteBase verwenden, aber ein bisschen geändert:
%Vor%so ändern Sie einfach die RewriteRule zu diesem:
%Vor%Aus den Worten der CodeIgniter-Dokumentation
Standardmäßig wird die Datei index.php in Ihre URLs aufgenommen:
Beispiel.com/index.php/news/article/my_article Sie können diese Datei leicht entfernen, indem Sie eine .htaccess-Datei mit einigen einfachen Regeln verwenden. Hier ist ein Beispiel für eine solche Datei, die die "negative" Methode verwendet, bei der alles mit Ausnahme der angegebenen Elemente umgeleitet wird:
%Vor%Im obigen Beispiel wird jede andere HTTP-Anfrage als die für index.php, images und robots.txt als Anfrage für Ihre index.php-Datei behandelt.
Sie finden es hier: Ссылка
Tags und Links macos apache codeigniter osx-snow-leopard