2016-05-30 8 views
3

Ich habe CodeIgniter (CI) Integration mit Wordpress (WP). Nach vielen Wochen harter Arbeit funktioniert die Integration in meinem lokalen XAMP.coderigniter funktioniert gut auf lokalen xampp, aber 404 auf dem Apache-Webserver für alle benutzerdefinierten Controller

Wenn ich die gleiche Struktur auf Server/Produktionsumgebung verschoben habe, sieht die Integration zwischen CI und WP immer noch gut aus (ich sage es, weil der Standardcontroller von CI /welcome/index.php funktioniert), aber wenn ich andere benutzerdefinierte Controller verwende bekomme nur 404.

Ich versuche viele Optionen basierend auf meiner Google-Suche Aufwand wie 1.tweaking .htaccess 2. Änderungen an der Konfigurationsdatei 3. Änderungen an Route Datei und keine der Lösung funktioniert für mich. Ich hoffe, dass jemand dafür eine Lösung hat. Danke fürs Lesen und unten sind Details.

Site-Struktur:

Site Root 
- All WP files 
- .htaccess 
- CI folder - contains all CI files 
-- .htaccess 

WP .htaccess

RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

CI .htaccess

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

CI-Konfigurationsdatei

$config['base_url'] = 'http://mysitecom/ci/'; 

Lokale URLs:

http://localhost/ci/ --> works and gives me default Welcome index page 
http://localhost/ci/book/ --> works and gives me right page 

Apache Server-URLs:

http://mysitecom/ci/ --> works and gives me default Welcome index page 
http://mysitecom/ci/book/ --> Does NOT work and gives me 404 error 

Für das Heck von ihm, habe ich versucht, folgendes zu sehen, ob ich 'Buch' als Standard erzwingen und es gab mir noch 404 für http://mysitecom/ci/Buch/

$route['default_controller'] = 'book'; 

nicht sicher, warum Standard-CI-Controller funktioniert, aber keine benutzerdefinierten Controller in apache Web ser ver. Ich vermisse etwas, aber nicht sicher was?

+1

Haben Sie sicherstellen, dass Ihr Controller ersten Buchstaben nur Großbuchstaben auf Dateiname und Klasse haben. – user4419336

+0

Toller Zeiger und das war sicherlich ein Problem. Ich habe jetzt Großbuchstaben für Klassen- und Dateinamen für Controller- und Modellklassen verwendet. Diese Lösung löste mein 404, aber jetzt bekomme ich einen leeren Bildschirm ohne Fehler; überprüft alle Protokolldateien und überhaupt keine Hinweise außer "Anforderung überschritten die Grenze von 10 internen Weiterleitungen aufgrund wahrscheinlicher Konfigurationsfehler." – bizready

Antwort

0

Was bemerkte ich, wodurch du Miss Match in config und

$config['base_url'] = 'http://mysitecom/ci/'; 

In .htaccess

RewriteBase/

Dies bezieht sich auf Stamm der Website .htaccess, die http://mysitecom/

ist aber Ihre aktuelle Anwendung läuft unter http://mysitecom/ci/

So

es ersetzen mit

RewriteBase /ci/ 

Ein weiterer Bereich ist Dateiname, bitte sicher, dass alle Controller Namen mit Kappen beginnen machen.

Zum Beispiel, wenn mein Controller ist Admin dann der Dateiname Admin.php sein sollte und Sie haben wie

class Admin extends CI_Controller{ 
    --Code here--- 
} 
0

zu erklären Haben Sie die Leitlinie bei https://www.cometchat.com/blog/how-to-integrate-codeigniter-with-wordpress/ zu integrieren codeigniter mit Wordpress folgen? Der Punkt 1 (WordPress-Bootstrap-Datei hinzufügen) ist am wichtigsten.

In meinem Fall meine routes.php Datei sieht wie folgt aus:

$route['(?i)bookings/(:any)'] = 'bookings/$1'; 
$route['(?i)bookings'] = 'bookings'; 
$route['(?i)(:any)'] = 'bookings/index/$1'; 
$route['default_controller'] = 'bookings/index'; 

Buchungen ein Controller ist, der meines Reservierungssystem verantwortlich ist. Es ist in der Produktion bei https://eventsol.es/transfers/

Verwandte Themen