CodeIgniter supprimer index.php mod_rewrite d'apache
J'utilise CodeIgniter sur un ordinateur Windows en utilisant le Zend Comunauté Serveur avec apache. Mon apache est correctement configuré pour gérer .htaccess directives et mod_rewrite est activé (httpd.conf):
<Directory />
Options FollowSymLinks
AllowOverride FileInfo
Order deny,allow
Deny from all
</Directory>
Ma racine est C:\www\
et mon site est situé dans C:\www\david\
et quand je tape http://localhost/david/
, l'index.php est chargé avec le contrôleur approprié. Je veux accéder à mes choses directement par le biais de http://localhost/david/Articles/
au lieu de http://localhost/david/index.php/Articles/
. Pour ce faire, je dois utiliser module de réécriture apache.
Pour ce faire, j'ai placé une .htaccess
fichier dans le C:\www\david\
dossier. Ce fichier contient le code que j'ai trouvé sur ici :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /david/
#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^core.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
J'ai fait quelques modifications au code depuis ma configuration est un peu différente de la valeur par défaut. Je ne suis pas sur la racine de la sorte : 'RewriteBase /davidfrancoeur.com/" et j'ai renommé le CodeIgniter dossier système de sécurité supplémentaire :
RewriteCond %{REQUEST_URI} ^core.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
Avec ce fait, tout devrait fonctionner correctement, je devrais être en mesure d'accéder à http://localhost/david/Articles/
sans problème et je pense que je ne devrais pas être en mesure d'atteindre http://localhost/david/core/config/config.php
directement.
Malheureusement, il ne fonctionne pas, il ne regarde même pas comme tout processus de réécriture est fait. Voyez-vous si je fais quelque chose de mal ici? Est-il un moyen de savoir si apache réellement réécrire quelque chose?
Merci beaucoup. Et oui j'ai regardé les millions de l'article j'ai pu trouvé à ce sujet... 🙁
MODIFIER
CI 2.0.2, PHP 5.3, Apache 2.2
Vous devez vous connecter pour publier un commentaire.
Il va travailler.....en fait les deux premiers réécrire les conditions et les règles de travail, mais dans la troisième réécriture d'état, vous permettant à l'utilisateur d'accéder à un fichier de demande ,même si c'est du cœur ou du système de fichier.
Edit: Fixe 'rewrite' faute de frappe
Après en regardant attentivement dans le httpd.conf de mon Zend Serveur de Communauté, j'ai réalisé qu'il y avait deux
<Directory />
instruction. Le premier était vide, comme illustré dans la question et la deuxième fois on a regardé comme ça :J'ai changé la ligne suivante
AllowOverride None
à AllowOverride All " et cela a fonctionné. Pour ceux qui voudraient en savoir plus sur la réécriture d'URL avec CodeIgniter regarder là : http://codeigniter.com/wiki/mod_rewrite/Et de bien comprendre ce qui
AllowOverride
, ne lisez : http://httpd.apache.org/docs/2.0/mod/core.html#allowoverrideMerci encore jamais aidé!
ppet empêche l'utilisateur d'accéder au dossier de l'application
#Présentée par: Fabdrol
#Rename '"application" de votre dossier "applications", nom.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]