it-swarm.com.de

Codeigniter - Fehler 404 Nicht gefunden

Wir haben zwei Hosting-Pakete bei Godaddy. Unsere Live-Website funktioniert gut mit der folgenden .htaccess-Datei. Die Website ist ohne die Verwendung von index.php in der URL erreichbar.

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

Wir haben dieselbe Htaccess-Datei und denselben Code für andere Hosting-Programme verwendet, die auch von Godaddy stammen. Wir wollten nur Produktions- und Entwicklungsinstanzen trennen. Bei anderen Hostings mit gleichem Code und derselben htaccess-Datei zeigt die Website jedoch den Fehler 404 an, der nicht gefunden wurde, aber die Website funktioniert gut mit der index.php in der URL.

Wir haben auf beiden Servern die gleiche PHP-Version. Will nur wissen, was das Problem sein könnte?

10
Anjum

Ich hatte auch ein ähnliches Problem, wenn ich meinen 100% igen Arbeitscode auf einen dedizierten Debian-Server verschiebe. Nach drei Stunden Recherche habe ich herausgefunden, warum die htaccess-Datei nicht funktioniert. Sie müssen das Überschreiben von htaccess in der Apache-Konfiguration zulassen.

Hier sind die Schritte.

Schritt 1:

Fügen Sie dies in der htaccess-Datei hinzu

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

Schritt 2:

Entfernen Sie index.php in der Codeigniter-Konfiguration

$config['index_page'] = '';

Schritt 3:

Überschreiben von htaccess in der Apache-Konfiguration zulassen (Befehl)

Sudo nano /etc/Apache2/Apache2.conf

und bearbeiten Sie die Datei und ändern Sie zu

AllowOverride All

für den WWW-Ordner

Schritt 4:

Apache neu starten (Befehl)

Sudo /etc/init.d/Apache2 restart

Bevor Sie Änderungen in der Datei Apache2.conf vornehmen, müssen Sie eine Sicherungskopie dieser Datei erstellen. Wenn Sie einen Debian-Server verwenden, können Sie den Sudo-Befehl vermeiden. Ich glaube, dass Sie wissen, wie Sie mit ssh-Client-Software wie PuTTY eine Verbindung zu Ihrem Server herstellen. Kommentar unten, wenn diese Methode für Sie nicht funktioniert.

10
Geordy James

Sie können dies verwenden. Das funktioniert für mich im Paddy-Hosting.

RewriteEngine On 
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?/$1
2
Ivan

Versuchen Sie, alle Controller klein zu schreiben. Dies behebt das Problem für mich.

1
Carlos R

probiere dieses .. es funktioniert für mich ..

DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA]
1
Ramanjit Singh

in der index.php gibst du "test" ein und startest. dann kannst du prüfen, ob es aufgerufen wird oder nicht. in der Konfigurationsdatei Fehlerprotokoll aktivieren. Machen Sie Ihren Ordner/application/logs beschreibbar. Im /application/config/config.php einstellen. $config['log_threshold'] = 4;

überprüfen Sie das Protokoll /application/logs Mappe

1
Nishancw

Ich bin mit dem ähnlichen Problem konfrontiert, wenn ich mich auf Paddy-Server bewege. Und es funktioniert für mich.

Fügen Sie diesen Code in Ihre .htaccess-Datei ein.

<IfModule mod_rewrite.c>
    RewriteEngine On

   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d

   # Rewrite all other URLs to index.php/URL
   RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 

</IfModule>
<IfModule !mod_rewrite.c>
       ErrorDocument 404 index.php
</IfModule>

In der Konfigurationsdatei:

$config['base_url'] = 'domain.com';
$config['index.php'] = '';

Und Set AllowOverride to All in Ihrer httpd.conf

richten Sie die richtige Berechtigung für den Ordner/cache ein, anstatt den Ordner nur beschreibbar zu machen.

Ich hoffe es wird für dich funktionieren.

1
Jay Kareliya

Folge dies

  • Erstellen Sie eine neue .htaccess-Datei in Ihrem public_html/Project-Stammverzeichnis
  • Fügen Sie den folgenden Code ein

    RewriteEngine on
    RewriteBase /
    RewriteCond $1 !^(index\.php|resources|robots\.txt|static) [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/?$1 [L,QSA]
    

  • Wahlweise 

Wenn Sie den Befehl ssh [email protected]_address in einer Befehlszeile verwenden, können Sie entweder den Linux-Terminal oder PuTTY verwenden

Die username ist diejenige, die Sie von GoDaddy erhalten haben, oder Sie können root verwenden.

Der ip_address wäre die öffentliche IP-Adresse Ihres Hosts, die Sie in Ihrem Hosting-Bereich finden können

Führen Sie den Befehl Sudo a2dissite 000-default aus.

Der Befehl deaktiviert die Standard-Apache-Konfiguration, die die Anforderung verarbeitet

Viel Glück!

0

Wie Sie hier bereits erwähnt haben, funktioniert Ihr Code auf localhost einwandfrei. Wenn Sie ihn jedoch über einen Live-Server verschieben, wird der Fehler 404 ausgelöst. Es gibt möglicherweise einige Fälle, die Sie überprüfen müssen:

Schritt 1: Überprüfen Sie, ob mod_rewrite in Ihrer Apache-Konfiguration aktiviert ist oder nicht

Schritt 2: Entferne index.php in der codeigniter config wie von @geordy vorgeschlagen

Sie können es durch überprüfen

<?php
echo 'Test'; die;
?>

in deinem root index.php. Es stellt sicher, dass alle Ihre Anforderungen diese Dateien durchlaufen, ansonsten würde das Codeigniter-Framework nicht ordnungsgemäß funktionieren.

0
Abhishek Singh

Ich habe nur begrenzte Kenntnisse im Bereich der Servernetzwerke, aber dies sollte Ihnen einige Ideen geben.

Zunächst müssen Sie wissen, was die .htacess-Datei ist. Sie können es hier überprüfen. Link

.htaccess ist eine Konfigurationsdatei zur Verwendung auf Webservern, auf denen die .__ ausgeführt wird. Apache-Webserver-Software. Wenn eine .htaccess-Datei in einem .__ platziert wird. Verzeichnis, das wiederum über den Apache Web Server geladen wird, dann Die .htaccess-Datei wird vom Apache-Webserver erkannt und ausgeführt. Software. Diese .htaccess-Dateien können verwendet werden, um die Konfiguration zu ändern der Apache Web Server-Software zum Aktivieren/Deaktivieren zusätzlicher Funktionalität und Funktionen, die die Apache Web Server-Software aufweisen muss Angebot. Diese Funktionen umfassen grundlegende Umleitungsfunktionen für Instanz, wenn ein Fehler der 404-Datei nicht gefunden wird oder für fortgeschrittenere Funktionen wie Inhaltskennwortschutz oder Hot-Link für Bilder Verhütung.

Grundsätzlich gibt Ihnen .htaccess die Berechtigung, die Konfiguration von Apache Web Server zu bearbeiten. Sie erhalten die Berechtigung mit .htacess, wenn in Apache mod_rewrite aktiviert ist. Ich werde nicht schreiben, was diese 4 grundlegende Zeile in .htaccess in codeigniter tun kann, da Sie es in google finden können. Dieses link kann Ihnen einige grundlegende Informationen geben.

Nun ist das Hauptproblem, dass .htaccess in Ihrem anderen Hosting nicht funktioniert. Dies ist aus einem bestimmten Grund möglich:

  1. Aus irgendeinem Grund ist mod_rewrite in Ihrem Apache-Webserver deaktiviert. Wenn Ihr Hosting VPS oder DS ist, ist es möglich, dass Sie es noch nicht konfigurieren. Jemand fragt bereits, wie Sie mod_rewrite aktivieren können, Sie können zu diesem link gehen. Wenn Sie Shared Hosting verwenden, bitten Sie Ihr Hosting, mod.rewrite in Ihrem Host zu aktivieren. Sie können nach diesem Link überprüfen, ob in Ihrem Hosting mod.rewrite aktiviert ist oder nicht. Oder Sie können einfach mit <?php phpinfo(); ?> nachsehen und in "Geladene Module" nach Mod_rewrite suchen oder nicht. Beispiel in diesem Bild .
  2. Sie verwenden Apache nicht als Webserver. Es gibt andere Webserver wie NGINX und lighttpd. Sie sollten Ihren Serveradministrator fragen, welchen Webserver Sie aktuell verwenden. Ich habe keine Erfahrung mit NGINX und lighttpd, daher kann ich Ihnen keine Hilfe geben. Soweit ich weiß, unterscheidet sich der .htaccess-Code in Apache, NGINX und lighttpd. Sie können versuchen, .htaccess-Apache-Code in hier oder hier in Nginx-Code umzuwandeln. Für die Konvertierung von .htaccess in lighttpd kann ich leider keinen Online-Konverter finden, aber es gibt einen offiziellen Leitfaden hier und hier
  3. Nun, für die kompletten Tipps will ich dies schreiben. Es ist möglich, dass Sie Codeigniter nicht so konfigurieren, dass index.php nicht verwendet wird. Leere Konfiguration in der Konfigurationsdatei für index_page. und geben Sie Base_url Ihren Domainnamen. $config['base_url'] = "yourdomainname.com"; $config['index_page'] = '';

Ich hoffe, dass dies klar wird, warum Ihr .htaccess nicht funktioniert hat.

0
La Croix