Rewriterule pour CodeIgniter ne fonctionne pas
J'ai installé un propre Apache2 (plus PHP & MySQL) et du serveur de permis de mod_rewrite
dans la config d'apache.
J'ai ajouté le .htaccess
fichier pour supprimer l'index.php à partir de l'url comme décrit dans la CodeIgniter wiki.
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
J'ai placé ce fichier dans le site web de la racine.
Lorsque j'essaie d'accéder à l'url mydomain.local/index.php/welcome
puis-je obtenir la page par défaut de CodeIgniter. Mais lorsque j'essaie d'accéder à la même page par mydomain.local/welcome
puis-je obtenir la page 404.
Comment puis-je vérifier si l'ensemble de la règle de réécriture est de travail? Et pourquoi n'est-il pas de travail?
Vous devez vous connecter pour publier un commentaire.
En supposant que votre configuration (/application/config/config.php) a la index_page désactivé:
Et votre Apache DocumentRoot est: /srv/www/
Créer un .htaccess fichier au même niveau que votre /application/ répertoire, avec le contenu suivant:
Vous devriez noter que RewriteBase points à la DocumentRoot (/).
Si le index.php est dans un autre répertoire, vous devez changer RewriteBase en conséquence.
Pour une structure de répertoire:
Votre RewriteBase devrait être: /
Pour une structure de répertoire:
Votre RewriteBase devrait être: /codeigniter/
Et ainsi de suite, vous obtenez l'image.
J'ai trouvé la solution. Le fichier htaccess n'était pas autorisé à exécuter par la config d'Apache. Donc j'ai dû mettre le
AllowOverride
drapeau sur le répertoire deAllowOverride ALL
.Merci pour toute l'aide!
Par défaut .htaccess (à partir de ci userguide http://ellislab.com/codeigniter/user-guide/general/urls.html)
J'ai confondre le code ci-dessus pour un moment, mais j'ai un code comme ceci:
Sur localhost, vous devez ajouter "./" en face de index.php (3ème ligne) parce que dans mon cas, ci répertoire non placé sur la racine. Je pense que "./" signifie qu'il doit être relative chemin.
Pour plus d'condition
".*\.css|.*\.js|.*\.png"
, cela signifie que apache ne doit pas réécrire sur des fichiers avec des extensions css, js et png.vous devez supprimer le index.php à partir de la page d'index dans le fichier de configuration
/application/config/config.php
De l'essayer .htaccess genre de choses, c'est ce que je suis en utilisant:
Vous pouvez également besoin de permettre
mod_rewite
à vous de configuration d'apache.D'essayer de changer le uri_protocol paramètres de configuration. Aussi, certains serveurs besoin de cette modification dans le fichier htaccess:
Le point d'interrogation après le dernier slash. Essayez que.
Assurez-vous également que votre mod_rewrite est activé.
Si vous rencontrez un
500 Internal Server Error
. Le premier endroit à regarder est l'apacheerror.log
fichier. Pour moi l'erreur est liée à la commandeAddOutputFilterByType
.Pour ma configuration, deux modules n'ont pas été activé dans la configuration d'apache, tandis que les commandes respectives étaient utilisées dans la
.htaccess
. Donc, une fois que j'ai activé lafilter_module
et ladeflate_module
tout était normal.