Entfernen Sie "index.php" von URL - Codeigniter

8

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:

%Vor%

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:

%Vor%     
MacMac 24.07.2011, 20:11
quelle

12 Antworten

8

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.

    
ace 28.07.2011, 12:39
quelle
7

Probieren Sie es aus

%Vor%

Ich habe versucht, 3, bevor ich einen zu arbeiten

    
Brad 24.07.2011 21:37
quelle
6

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%     
Akhilraj N S 17.10.2012 03:31
quelle
3

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

existiert

Hoffen Sie diese Hilfe

    
Francesco Laurita 25.07.2011 21:47
quelle
2

Versuch es ...

%Vor%     
toopay 27.07.2011 12:21
quelle
2

Ich habe das gleiche Problem, die Dinge sind.

  1. htacces sollte im Stamm von Codeigniter sein
  2. Entfernen Sie "Deny from all" in Ihrer htacces-Datei.
  3. Fügen Sie den Code zum obigen Beitrag hinzu
Robin 01.12.2012 16:01
quelle
1

Sie sollten

ändern %Vor%

bis

%Vor%

Sie müssen auch die Variable $ config ['index_page'] wie folgt ändern:

%Vor%

Bitte beachten Sie meinen Beitrag unter Ссылка wenn Sie möchten.

    
Box 25.07.2011 01:03
quelle
0

in /etc/apache2/users/.conf

versuche es hinzuzufügen ..

%Vor%

und starten Sie Apache neu, um die Ergebnisse zu überprüfen ..

    
Vamsi 30.07.2011 02:15
quelle
0

Kopieren Sie die .htaccess-Datei in Ihren Haupt-Codeigniter-Ordner, meiner war localhost / codeigniter / und dann ändern Sie die {RewriteBase / in RewriteBase / codeigniter /}

    
gilbert 17.05.2012 15:49
quelle
0
%Vor%

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.

    
Mirza Qasim Ali 12.10.2012 12:59
quelle
-1

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%     
Jarek Tkaczyk 24.07.2011 20:36
quelle
-1

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: Ссылка

    
Marc Towler 24.07.2011 20:39
quelle