wake-up-neo.com

CodeIgniter 404-Seite nicht gefunden, aber warum?

Ich verwende CodeIgniter für zwei Anwendungen (eine öffentliche und eine Admin-App) .. Die wichtigsten Elemente der Dokumentstruktur sind:

/admin
/admin/.htaccess
/admin/index.html
/application
/application/admin
/application/public
/system
.htaccess
index.php

Die Datei /admin/.htaccess sieht folgendermaßen aus: 

DirectoryIndex index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

Die Datei /admin/index.php hat folgende Änderungen:

$system_folder = "../system";
$application_folder = "../application/admin"; (this line exists of course twice)

Und /application/admin/config/routes.php enthält Folgendes: 

$route['default_controller'] = "welcome";
$route['admin'] = 'welcome';

Willkommen ist mein Standardcontroller.

Wenn ich die Domain/admin aufrufe, erhalte ich den Fehler 404 Page Not Found. Beim Aufruf der Domain/admin/welcome funktioniert alles einwandfrei. In den Debug-Protokollen wird folgende Fehlermeldung angezeigt: 

DEBUG - 2010-09-20 16:27:34 --> Config Class Initialized
DEBUG - 2010-09-20 16:27:34 --> Hooks Class Initialized
DEBUG - 2010-09-20 16:27:34 --> URI Class Initialized
ERROR - 2010-09-20 16:27:34 --> 404 Page Not Found --> admin

Seltsamerweise funktioniert dieses Setup auf meiner lokalen MAMP-Installation (mit der localdomain/admin /) einwandfrei, aber wenn ich es auf dem "Live" -Server veröffentliche und teste, erhalte ich nur 404 Fehler. 

Irgendwelche Ideen? Was mache ich falsch? Danke C.

18
Joseph

Die Ursache des Problems war, dass der Server PHP mit FastCGI ausführte.

Nachdem Sie die config.php in geändert haben

$config['uri_protocol'] = "REQUEST_URI";

alles hat funktioniert.

15
Joseph

Diese Antwort hier für andere zu lassen, die auf meine Situation gestoßen sind.

Die Codeigniter-App funktionierte in localhost/WAMP einwandfrei, konnte jedoch nicht weitergeleitet werden. Es wurden keine 404-Fehler gefunden, wenn auf eine AWS EC2-Instanz verschoben wurde. Mein Problem wurde aus der Antwort von HIERhtaccess in localhost gelöst, aber in der EC2-Instanz nicht.

(Route zu meiner Admin-Seite) {domain}/admin produzierte 404

die /etc/httpd/conf/httpd.conf-Datei muss geändert werden. 

-Nach jeder Instanz von "DocumentRoot"/var/www/html "" (2 Stellen) "AllowOverride None" muss in "AllowOverride All" geändert werden.

Die EC2-Instanz wurde vom AWS-Dashboard aus neu gestartet.

{domain}/admin ist jetzt zugänglich und funktioniert wie vorgesehen.

hoffe das hilft jemand anderen wie es mir geholfen hat!

6
JoshuaC

Sie können eine von zwei Sachen oder eine Kombination von beiden versuchen.

  1. Stellen Sie sicher, dass der Name Ihres Controllers mit einem Großbuchstaben beginnt. zB "Mycontroller.php"
  2. Wenn Sie an Ihrer Route keine Änderungen vorgenommen haben, müssen Sie möglicherweise aus irgendeinem Grund Großbuchstaben in Ihre URL einfügen. Wenn Ihr Controller beispielsweise 'Mycontroller.php' mit einer Funktion namens 'testfunc' ist, sieht Ihre URL folgendermaßen aus: " http: //www.ihredomain/index.php/Mycontroller/testfunc ". Beachten Sie den Großbuchstaben. (Ich gehe davon aus, dass Sie die htaccess-Datei nicht hinzugefügt haben, um den Teil 'index.php' zu entfernen. Wenn dies der Fall ist, entfernen Sie sie einfach aus der URL.)

Ich hoffe das hilft jemandem

5
Amin Balogun
  1. Ändern Sie den ersten Buchstaben Ihres Controller-Namens in Großbuchstaben.
  2. Ändern Sie Ihre URL genauso wie Ihren Controller-Namen.

z.B:

Ihr Controller-Name lautet YourController

Ihre URL muss sein:

http://example.com/index.php/YourController/method

Nicht sein:

http://example.com/index.php/ihrecontroller/methode

3
DevYuan

auf der Serverseite müssen wir den Controller-Namen in Kleinbuchstaben angeben

$this->class = strtolower(__CLASS__);
2
MAK

Ich hatte das gleiche Problem nach der Migration in eine neue Umgebung und es war einfach so, dass der Server mod_rewrite nicht ausgeführt hat

ein schneller Sudo a2enmod rewrite dann Sudo systemctl restart Apache2

und Problem gelöst ...

Danke @fanis, der darauf in seinem Kommentar zu der Frage hingewiesen hat.

1
Antony P.

Ihre Ordner-/Dateistruktur erscheint mir etwas seltsam. Ich kann nicht recht herausfinden, wie Sie das angelegt haben.

Hallo, ich verwende CodeIgniter für zwei Anwendungen (eine öffentliche und eine Admin-App).

Das hört sich für mich an, als hätten Sie zwei separate CI-Installationen. Wenn dies der Fall ist, würde ich dagegen empfehlen. Warum erledigen Sie nicht einfach alle Verwaltungssachen in einem Admin-Controller? Wenn Sie zwei separate CI-Installationen wünschen, stellen Sie sicher, dass es sich definitiv um unterschiedliche Entitäten handelt und dass die beiden nicht miteinander in Konflikt stehen. Diese Linie:

$system_folder = "../system";
$application_folder = "../application/admin"; (this line exists of course twice)

Und an dem Ort, von dem Sie sagten, dass es diesen gibt (/admin/index.php ... oder meinten Sie/admin/application/config?), Habe ich mir den Kopf gekratzt. Sie haben admin/application/admin und einen Systemordner auf oberster Ebene?

1
treeface

In meinem Fall habe ich es für localhost verwendet und vergessen, RewriteBase in .htaccess zu ändern.

0
user3526