web-dev-qa-db-fra.com

Supprimer index.php de l'URL - Codeigniter 2

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.

30
Paul

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).

23
WNRosenberg

Cela a fonctionné pour moi:

  1. Créez votre fichier htaccess
  2. Définissez $ config [‘index_page’] sur un espace vide (config.php)
  3. string Set $ ​​config ['uri_protocol'] = 'REQUEST_URI'; (config.php)

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

15
Robin Morgan
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

3
saurabh kamble

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.

2
neelabh

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

2
Mário Carvalho

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

1
tushar

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]
1
daxter