Nous avons deux forfaits d'hébergement à GoDaddy. Notre site Web fonctionne correctement en utilisant le fichier .htaccess suivant. Le site Web est accessible sans utiliser index.php dans l'URL.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
Nous avons utilisé le même fichier htaccess et le même code sur d'autres hébergements hébergés également par godaddy. Nous voulions simplement séparer les instances de production et de développement. Mais sur d’autres hébergements avec le même code et le même fichier htaccess, le site Web indique 404 erreur introuvable, mais le site Web fonctionne bien avec index.php dans l’URL.
Nous avons la même version php sur les deux serveurs. Je veux juste savoir quel pourrait être le problème?
J'ai également rencontré le même problème lorsque j'ai déplacé mon code de travail à 100% sur un serveur Debian dédié. Après 3 heures de recherche, j'ai découvert pourquoi le fichier htaccess ne fonctionnait pas. Vous devez autoriser le remplacement de htaccess dans la configuration d'Apache.
Voici les étapes.
Étape 1:
Ajouter ceci dans le fichier htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>
Étape 2:
Supprimer index.php dans codeigniter config
$config['index_page'] = '';
Étape 3:
Autoriser le remplacement de htaccess dans Apache Configuration (Command)
Sudo nano /etc/Apache2/Apache2.conf
et éditez le fichier et passez à
AllowOverride All
pour le dossier www
Étape 4:
Redémarrer Apache (Commande)
Sudo /etc/init.d/Apache2 restart
Avant de modifier le fichier Apache2.conf, veillez à en créer une copie de sauvegarde. Si vous utilisez un serveur Debian, vous pouvez éviter la commande Sudo. Je crois que vous savez comment vous connecter à votre serveur en utilisant un logiciel client ssh comme PuTTY. Commentaire ci-dessous si cette méthode ne fonctionne pas pour vous.
Vous pouvez utiliser ceci. Cela fonctionne pour moi dans l'hébergement GoDaddy.
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?/$1
Essayez de mettre tous vos contrôleurs en minuscule. Cela corrige le problème pour moi.
essayez celui-ci .. ça marche pour moi ..
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]
dans index.php, vous lancez un "test" et lancez. Vous pouvez alors vérifier s'il est appelé ou non . dans le fichier de configuration activer le journal des erreurs . Rendre votre dossier/application/logs accessible en écriture . En /application/config/config.php
ensemble. $config['log_threshold'] = 4;
vérifier le journal log /application/logs
J'ai rencontré le même problème quand je me suis déplacé sur le serveur GoDaddy. Et c'est un travail pour moi.
Ajoutez ce code dans votre fichier .htaccess.
<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>
Dans le fichier de configuration:
$config['base_url'] = 'domain.com';
$config['index.php'] = '';
Et Set AllowOverride to All
dans votre httpd.conf
définissez l'autorisation correcte sur le dossier/cache, plutôt que de simplement rendre le dossier accessible en écriture, vous devez le rendre accessible en écriture.
J'espère que cela fonctionnera pour vous.
Coller le code suivant
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]
Si vous pouvez ssh sur le serveur en utilisant la commande ssh username@ip_address
sur une ligne de commande, utilisez un terminal Linux ou PuTTY.
La username
est celle que GoDaddy vous a donnée ou vous pouvez utiliser root
Le ip_address
serait l'adresse IP publique de votre hôte, vous pouvez le trouver dans votre panneau d'hébergement
Exécutez la commande Sudo a2dissite 000-default
La commande désactive la configuration Apache par défaut qui gère les requêtes.
Bonne chance!
Comme vous l'avez mentionné ici, sur localhost, votre code fonctionne bien, mais lorsque vous l'avez déplacé sur un serveur actif, il génère une erreur 404. Vous devrez peut-être vérifier quelques cas:
Etape 1: Vérifiez que mod_rewrite est activé ou non dans votre configuration Apache
Étape 2: Supprimez index.php dans la configuration de codeigniter comme suggéré par @geordy
Vous pouvez vérifier par
<?php
echo 'Test'; die;
?>
dans votre racine index.php. Cela garantit que toutes vos demandes passent par ces fichiers, sinon la structure Codeigniter ne fonctionnerait pas correctement.
J'ai des connaissances limitées en réseau de serveurs, mais cela devrait vous donner quelques idées.
Tout d’abord, vous devez savoir quel est le fichier .htacess. vous pouvez le vérifier ici link
.htaccess est un fichier de configuration à utiliser sur les serveurs Web exécutant le fichier Logiciel Apache Web Server. Lorsqu'un fichier .htaccess est placé dans un fichier répertoire qui est à son tour "chargé via le serveur Web Apache", puis le fichier .htaccess est détecté et exécuté par le serveur Web Apache Logiciel. Ces fichiers .htaccess peuvent être utilisés pour modifier la configuration du logiciel Apache Web Server pour activer/désactiver des fichiers .__ supplémentaires. fonctionnalités et fonctionnalités que le logiciel Apache Web Server doit posséder offre. Ces installations incluent la fonctionnalité de redirection de base, pour exemple si une erreur de fichier non trouvé 404 se produit, ou pour une version plus avancée des fonctions telles que la protection par mot de passe du contenu ou le lien dynamique d’image la prévention.
En gros, .htaccess vous donne l’autorisation de modifier la configuration de serveur Web Apache. Vous obtiendrez une autorisation en utilisant .htacess si mod_rewrite est activé dans Apache. Je n'écrirai pas ce que cette ligne de base dans .htaccess peut faire dans codeigniter car vous pouvez la trouver dans google. this link peut vous donner quelques informations de base sur Nice.
Maintenant, le problème principal est que .htaccess ne fonctionne pas dans votre autre hébergement. Ceci est possible pour plusieurs raisons:
<?php phpinfo(); ?>
et vérifier dans "Loaded Modules" que mod_rewrite existe ou non. Exemple dans cette image .$config['base_url'] = "yourdomainname.com"; $config['index_page'] = '';
J'espère que cela efface votre confusion pourquoi votre .htaccess n'a pas fonctionné.