J'ai du mal à supprimer index.php de mes URL dans Codeigniter. J'ai créé quelques sites Web avec Codeigniter 1.7 et le code .htaccess que j'ai utilisé ne fonctionne pas dans 2.
J'ai essayé d'utiliser
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
et
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt|css)
RewriteRule ^(.*)$ ./index.php/$1 [L]
</IfModule>
Je l'ai également essayé sans RewriteBase/in.
J'ai changé la $ config ['uri_protocol'] en REQUEST_URI et QUERY_STRING et rien.
J'ai défini $ config ['index_page'] = "";
La structure du fichier est 192.168.0.130/(site)/ donc il doit revenir à la racine du serveur et ne peut pas trouver le fichier index.php.
Tous les contrôleurs que j'ai créés peuvent être atteints en mettant 192.168.0.130/(site)/index.php/testcontroller
Je vous remercie.
Toutes mes excuses si cela a déjà été demandé - j'ai regardé et essayé ce que j'ai pu voir.
Éditer:
Je dois également ajouter que j'ai changé les dossiers par défaut pour qu'ils soient
application
CI-2.0
index.php
et changé les chemins dans index.php pour être correct.
Essayez le premier bloc de code que vous avez publié, mais au lieu de /index.php, essayez d'utiliser /(site)/index.php (obv remplaçant (site) par le nom de votre dossier de site).
Cela a fonctionné pour moi:
Voici mon fichier htaccess:
Options -Indexes
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ index.php?/$1 [L]
#When your application folder isn't in the system folder
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]
# 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
La source:
http://taggedzi.com/articles/display/codeigniter-2-htaccess-and-friendly-urls
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
Ce n'est requis que dans le dossier racine, ajoutez ceci à .htaccess
Après avoir suivi toutes les instructions d'autres personnes et à partir de cela Documentation URL CodeIgnitor , n'oubliez pas de redémarrer le serveur . J'ai simplement oublié de le faire et j'ai continué à essayer toutes les autres solutions.
J'étais là-dessus pendant 2 jours .. J'ai tout essayé. Je viens de dire que vous avez besoin des éléments suivants:
TYPE:
Sudo nano /etc/Apache2/sites-available/default
Et changez AllowOverride None en AllowOverride All - Cela donnera accès à vos fichiers .htaccess
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
# Uncomment this directive is you want to see Apache2's
# default start page (in /Apache2-default) when you go to /
#RedirectMatch ^/$ /Apache2-default/
</Directory>
Et activez également la réécriture de mod sur Apache:
http://stackoverflow.com/questions/3131236/how-do-you-enable-mod-rewrite
J'espère que cela aide, Mário
1) Créez un fichier .htaccess dans votre dossier racine
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
2) Modifiez le fichier application/config/config.php dans le dossier Application
$config['base_url'] = 'http://localhost/projectName';
$config['index_page'] = ''; // remove index.php
j'espère que cela fonctionnera pour vous
Il vous suffit d'ajouter le code ci-dessous dans .htaccess.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]