J'utilise CodeIgniter pour deux applications (une application publique et une application d'administration) . Les éléments importants de la structure du document sont les suivants:
/admin
/admin/.htaccess
/admin/index.html
/application
/application/admin
/application/public
/system
.htaccess
index.php
Le fichier /admin/.htaccess ressemble à ceci:
DirectoryIndex index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
Le fichier /admin/index.php contient les modifications suivantes:
$system_folder = "../system";
$application_folder = "../application/admin"; (this line exists of course twice)
Et le /application/admin/config/routes.php contient les éléments suivants:
$route['default_controller'] = "welcome";
$route['admin'] = 'welcome';
Welcome est mon contrôleur par défaut.
Lorsque j'appelle le domaine/admin, j'obtiens une erreur 404 Page Not Found. Quand j'appelle le domaine/admin/bienvenue tout fonctionne bien. Dans les journaux de débogage, le message d'erreur suivant s'affiche:
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
Bizarrement, cette configuration fonctionne parfaitement sur mon installation MAMP locale (avec le domaine local/admin /), mais lorsque je le publie et le teste sur le serveur "live", je ne reçois que 404 erreurs.
Des idées? Qu'est-ce que je fais mal? Merci C.
La cause du problème était que le serveur exécutait PHP à l'aide de FastCGI.
Après avoir changé le fichier config.php en
$config['uri_protocol'] = "REQUEST_URI";
tout a fonctionné.
Laissant cette réponse ici pour les autres qui ont couru dans ma situation.
Mon application codeigniter fonctionnait correctement dans localhost/WAMP, mais elle était incapable de router et produisait 404 erreurs non trouvées lors du transfert vers une instance AWS EC2. Mon problème a été résolu à partir de la réponse de ICIhtaccess fonctionne dans localhost mais ne fonctionne pas dans les instances EC2
(route vers ma page d'administration) {domain}/admin produisait 404
le fichier /etc/httpd/conf/httpd.conf
doit être modifié.
-après chaque instance de "DocumentRoot"/var/www/html "" (2 emplacements) "AllowOverride None" devait être remplacé par "AllowOverride All".
Redémarrez l'instance EC2 à partir du tableau de bord AWS.
{domain}/admin est maintenant accessible et fonctionne comme prévu.
espérons que cela aide quelqu'un d'autre comme ça m'a aidé!
Vous pouvez essayer l'une des deux choses ou une combinaison des deux.
J'espère que ça aidera quelqu'un
par exemple:
Votre nom de contrôleur est YourController
Votre URL doit être:
http://example.com/index.php/YourController/method
Ne pas être:
nous devons donner le nom du contrôleur en minuscules côté serveur
$this->class = strtolower(__CLASS__);
J'ai eu le même problème après la migration vers un nouvel environnement et c'était simplement que le serveur n'a pas exécuté mod_rewrite
un rapide Sudo a2enmod rewrite
puis Sudo systemctl restart Apache2
et problème résolu ...
Merci aux @fanis qui l'ont souligné dans leur commentaire sur la question.
Votre structure de dossier/fichier me semble un peu étrange. Je n'arrive pas à comprendre comment vous avez prévu cela.
Bonjour, j'utilise CodeIgniter pour deux applications (une application publique et une application d'administration).
Cela me semble avoir deux installations de CI distinctes. Si tel est le cas, je le déconseille. Pourquoi ne pas simplement gérer tous les trucs admin dans un contrôleur admin? Si vous souhaitez deux installations de CI distinctes, assurez-vous qu’il s’agit bien d’entités distinctes et que les deux ne sont pas en conflit. Cette ligne:
$system_folder = "../system";
$application_folder = "../application/admin"; (this line exists of course twice)
Et l'endroit où vous avez dit que cela existe (/admin/index.php...ou voulez-vous dire/admin/application/config?) M'a fait me gratter la tête. Vous avez admin/application/admin et un dossier système au plus haut niveau?
Dans mon cas, je l'utilisais sur localhost
et j'avais oublié de changer RewriteBase
dans .htaccess
.