Ausgabe
Kann mir jemand dabei helfen? Ich fühle mich, als würde ich seit über 2 Stunden mit dem Kopf gegen eine Wand schlagen.
Ich habe Apache 2.2.8 + PHP 5.2.6
auf meinem Computer installiert und das .htaccess
mit dem folgenden Code funktioniert gut, keine Fehler.
RewriteEngine on
RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
Derselbe Code auf meinem Hosting-Provider-Server gibt mir einen 404-Fehlercode und gibt aus, only: No input file specified.
dass index.php vorhanden ist. Ich weiß, dass sie Apache installiert haben (kann nirgendwo Versionsinformationen finden) und PHP v5.2.8 ausführen.
Ich bin Windows XP 64-bit
eingeschaltet, einige laufen im Linux
Modus . Kann jemand vorschlagen, was das Problem sein könnte?PHP
CGI/FastCGI
PS. wenn das wichtig ist, ist das für CodeIgniter
die Arbeit mit benutzerfreundlichen URLs.
Update1:
mod_rewrite
ist installiert und eingeschaltet.
Was mir aufgefallen ist, ist, dass wenn ich in (Fragezeichen statt Schrägstrich) ändere RewriteRule
, /index.php?$1
es in eine Endlosschleife geht. Wie auch immer, die Verwendung von Fragezeichen ist keine Option, da CodeIgniter
(erforderlich) auf diese Weise nicht funktionieren wird.
Die Homepage funktioniert auch, wenn ich index.php direkt anfordere:example.com/index.php
Ich fange an zu glauben, dass Apache denken könnte, dass es sich nach dem Hinzufügen des abschließenden Schrägstrichs nicht mehr um eine Datei, sondern um einen Ordner handelt. Wie kann man ein solches Verhalten ändern?
Aktualisierung 2:
Ich lag falsch.
Apache verarbeitet diese URLs korrekt.
Das Anfordern http://example.com/index.php/start/
(Homepage) oder jede andere gültige Adresse funktioniert.
Scheint, dass Apache
die Abfrage aus irgendeinem Grund einfach nicht weitergeleitet wird.
Aktualisierung 3:
Nur um klar zu sein, was ich erreichen möchte.
Ich möchte Adressen wie folgt umschreiben:
http://www.example.com/something/ => http://www.example.com/index.php/something/
http://www.example.com/something/else/ => http:// www.example.com/index.php/irgendwas/sonst/
Lösung
Da habe ich mir auch den Kopf zerbrochen. Ich installiere auch Code Igniter.
Der Goocher war keine RewriteBase. Hier ist meine .htaccess:
DirectoryIndex index.php
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|robots\.txt)
RewriteRule ^(.*)$ index.php?/$1 [L]
Beantwortet von – jray
Antwort geprüft von – Mary Flores (FixError Volunteer)