web-dev-qa-db-fra.com

CodeIgniter supprimant index.php de l'URL

Mes URL actuelles ressemblent à ceci [mysite]index.php/[rest of the slug].
Je veux enlever index.php de ces URL. 

mod_rewrite est activé sur mon serveur Apache2. Dans config, $config['index_page'] = ''; 

Le fichier racine .htaccess de mon codeignitor contient, 

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

Mais cela ne fonctionne toujours pas. Où vais-je mal? 

126
Nihar Sarangi

Essayez ce qui suit

Ouvrez config.php et remplacez les éléments suivants

$config['index_page'] = "index.php"

à

$config['index_page'] = ""

Dans certains cas, le paramètre par défaut pour uri_protocol ne fonctionne pas correctement. Il suffit de remplacer 

$config['uri_protocol'] ="AUTO"

par

$config['uri_protocol'] = "REQUEST_URI"

.htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

Remarque: le code .htaccess varie en fonction du serveur d'hébergement. Dans certains serveurs d'hébergement (par exemple: Godaddy) besoin d'utiliser un extra? dans la dernière ligne du code ci-dessus. La ligne suivante sera remplacée par la dernière ligne dans les cas suivants:

// Replace last .htaccess line with this line
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 
205
Rahul Tailwal

Step: -1 Ouvrez le dossier “application/config” et ouvrez le fichier “config.php“. trouvez et remplacez le code ci-dessous dans le fichier config.php.

//find the below code   
$config['index_page'] = "index.php" 
//replace with the below code
$config['index_page'] = ""

Step: -2 Allez dans votre dossier CodeIgniter et créez .htaccess

Path:
Your_website_folder/
application/
assets/
system/
.htaccess <——— this file
index.php

Étape: -3 Écrire le code ci-dessous dans le fichier .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>

Étape: -4 Dans certains cas, le paramètre par défaut pour uri_protocol ne fonctionne pas correctement. Pour résoudre ce problème, ouvrez simplement le fichier “application/config/config.php“, puis recherchez et remplacez le code ci-dessous.

//find the below code
$config['uri_protocol'] = "AUTO"
//replace with the below code
$config['uri_protocol'] = "REQUEST_URI" 

C’est tout sauf dans wamp server, cela ne fonctionne pas car rewrite_module est désactivé par défaut, nous devons donc l’activer. pour cela faire ce qui suit

  1. Clic gauche icône WAMP
  2. Apache
  3. Modules Apache
  4. Clic gauche rewrite_module

Documentation originale

Exemple de lien

108
Salim

Étape 1 :

Ajouter ceci dans le fichier htaccess

<IfModule mod_rewrite.c>
  RewriteEngine On
  #RewriteBase /

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^ index.php [QSA,L]
</IfModule>

Étape 2 :

Supprimer index.php dans codeigniter config

$config['base_url'] = ''; 
$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 :

Activation de la réécriture du mod Apache (Commande)

Sudo a2enmod rewrite

Étape 5:

Redémarrer Apache (Commande)

Sudo /etc/init.d/Apache2 restart
31
Dino

Étape 1 => Placez votre fichier .htaccess dans le dossier racine contenant les dossiers de l’application et du système.

Étape 2 => Si votre chemin Web utilise un sous-dossier tel que - votredomaine.com/project/, utilisez le code suivant dans le fichier htaccess

RewriteEngine on
RewriteBase    /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]

Si votre chemin Web utilisant un dossier racine comme - votredomaine.com - utilisez le code suivant dans le fichier htaccess

RewriteEngine on
RewriteBase    /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
15
vinod
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

utilisation

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$1 [PT,L]

si vous avez l'URL dans cet ordre site.com/index.php/class/method/id

NB: supprimer index.php dans config.php devrait être config [index_page] = ""

NB: remarquez la différence à la dernière ligne au lieu de 0 $ utilisez 1 $

15
user3464848

Il y a deux étapes: 

1) Éditez le fichier config.php

$config['index_page'] = 'index.php';

À 

$config['index_page'] = '’;

2) Créer/Modifier un fichier .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
11
shafi

sur votre htaccess utilisez ceci,

RewriteEngine On
RewriteBase /root_folder_name/
RewriteCond %{REQUEST_URI} ^system.*
RewriteCond $1 !^(index\.php|images|js|uploads|css|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

J'espère que cela t'aides.

10

1.Créez un nouveau fichier .htaccess dans le répertoire racine.

<IfModule mod_rewrite.c>
RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>`

2. Accédez à votre fichier config.php et passez de $config['index_page'] = 'index.php' à $config['index_page'] = ''.

5
Manish Sharma
  1. faire un fichier .htaccess et mettre ce code

     RewriteEngine on
     RewriteCond $1 !^(index\.php|resources|robots\.txt)
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteRule ^(.*)$ index.php/$1 [L,QSA] 
    
  2. changement

    $config['index_page'] = ''; 
    

supprimer index.php présent dans le fichier config.php 

  1. réécrire sur votre serveur.
5
Siddharth Shukla

essayez celui-ci.Il peut vous aider car cela fonctionne pour moi.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

mettez le code dans votre fichier htaccess racine et assurez-vous que vous avez 

$config['index_page'] = '';

dans votre fichier de configuration.

S'il vous plaît laissez-moi savoir si vous rencontrez un problème.

4
ABorty
+ Copy .htaccess from Application to Root folder
+ edit .htaccess and put

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /ci_test/

    #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} ^system.*
    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>

Note: make sure your web server is enable for  "rewrite_module"

+ Remove index.php from $config['index_page'] = 'index.php';
- edit config.php in application/config
- search for index.php
change it from  $config['index_page'] = 'index.php'; to  $config['index_page'] = '';

Veuillez regarder ces vidéos pour référence https://www.youtube.com/watch?v=HFG2nMDn35Q

4
KH SolveCode

tout d’abord, vous devez utiliser le moteur de réécriture du serveur Apache. Ce lien vous aidera pour cela.

http://www.anmsaiful.net/blog/php/enable-Apache-rewrite-module.html

RewriteEngine On
RewriteBase /your_folder_name/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?/$1 [L]

ce sera votre fichier .htaccess . maintenant essayez-le .Ce paramètre fonctionne pour moi.

3
vaibhav kulkarni

Eh bien, toutes ces réponses sont bonnes, mais pour un débutant (ce qui est le cas pour la première fois), elles sont déroutantes. Il existe d'autres fichiers htaccess qui résident dans le contrôleur, mais nous devons éditer ou ajouter le fichier htaccess dans le dossier principal du projet. 

Ceci est votre dossier codeigniter, où le fichier réside comme une application, un système, des ressources, des téléchargements, etc.

Your_project_folder/
application/
assets/
cgi-bin/
system/
.htaccess---->(Edit this file if not exist than create it)
index.php

Changer ce fichier comme écrit ci-dessous:

<IfModule mod_rewrite.c>
  RewriteEngine On
  # !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading
  #  slashes.
  # If your page resides at http://www.example.com/mypage/test1
  # then use RewriteBase /mypage/test1/
  # Otherwise /
  RewriteBase /
  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: Anand Pandey
  ErrorDocument 404 /index.php
</IfModule>

et oui bien sûr, vous devez changer deux lignes de code dans le fichier application/config/config.php 

//find the below code   
$config['index_page'] = "index.php";
$config['uri_protocol'] ="AUTO" 
//replace with the below code
$config['index_page'] = "";
$config['uri_protocol'] = "REQUEST_URI";
3
Anand Pandey
  Removing index.php from url of codeigniter   

Three steps are require to remove index.php from url in Codeigniter.

1)Create .htacess file in parallel to application holder and just copy past the following code:

RewriteEngine On
RewriteBase /CodeIgniter/
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

2) Change $config['index_page'] to blank in config.php in application folder as below:

$config['index_page'] = '';

3) Enable “rewrite_module” of Apache.
2
Pritam Chaudhari

vous pouvez aller dans config\config.php file et supprimer la valeur index.php de cette variable

$config['index_page'] = 'index.php'; // delete index.php

créer un fichier .htaccess et y coller ce code.

<IfModule mod_rewrite.c>

 Options +FollowSymLinks

 RewriteEngine On
 #Send request via index.php
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule>

bonne chance

2
abbas hussen

Développement et production

    # Development
    RewriteEngine On
    RewriteBase /your_local_folder/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php|images|scripts|styles|vendor|robots\.txt)
    RewriteRule ^(.*)$ index.php/$1 [L]

    #Production PHP5 CGI mode
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php|images|scripts|styles|vendor|robots\.txt)
    RewriteRule ^(.*)$ index.php?/$1 [L]
2
cgwCode

Seulement trois étapes sont nécessaires pour supprimer index.php de l'URL dans Codeigniter

1) Créez un fichier .htacess en parallèle du détenteur de l’application et copiez simplement le code suivant:

RewriteEngine On
RewriteBase /CodeIgniter/
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

2) Changez $ config ['index_page'] en blanc dans config.php dans le dossier de l’application comme ci-dessous:

$config['index_page'] = '';

3) Activez le “module rewrite” d’Apache.

Redémarrez votre Apache et c'est fait.

Détails: http://sforsuresh.in/removing-index-php-from-url-of-codeigniter-in-wamp/

1
Suresh Kamrushi

Je pense que tout est bon mais que vous faites pour égarer votre fichier htaccess, allez et ajoutez votre htaccess à votre fichier projet 

dossier_projet-> htaccess

et ajoutez ce code à votre htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
1
Yaseen Ahmad

Vous pouvez éliminer index.php de l’URL en créant un fichier .htaccess dans le répertoire de base de votre projet, ce fichier contenant son contenu. 

RewriteEngine on
RewriteCond $ 1! ^ (Index.php | actifs | images | js | css | uploads | favicon.png)
RewriteCond% (REQUEST_FILENAME)! -F
RewriteCond% (REQUEST_FILENAME)! -D
RewriteRule ^ (. *) $ ./Index.php/$1 [L]

enregistrer ce fichier aussi votre fichier modifié dans config.php est correct

$config['index_page'] = '';

Je souhaite courir avec succès

0
Rabab Sh

Ajoutez ces lignes de codes sur votre fichier .htaccess:

RewriteEngine on    
RewriteCond $1 !^(index\.php|images|robots\.txt)    
RewriteRule ^(.*)$ /myproject/index.php/$1 [L]

Où 'mon projet est le nom de votre dossier de projet.

Vous pouvez en savoir plus sur CodeIgniter ou télécharger le fichier .htaccess à partir d’ici

0
Infolet.org

vous pouvez aller au fichier application\config\config.php et supprimer index.php


 $ config ['index_page'] = 'index.php'; // delete index.php 

Changer en


 $ config ['index_page'] = ''; 

0
Rafiqul Islam

Vous pouvez supprimer index.php de l'URL en plaçant du code dans .htaccess

Chemin du fichier: root> .htacess

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

J'espère que ça va marcher. 

0
Rokan Nashp

Suivez ces étapes, votre problème sera résolu

1- Téléchargez le fichier .htaccess ici https://www.dropbox.com/s/tupcu1ctkb8pmmd/.htaccess?dl=0

2- Modifier le nom du répertoire CodeIgnitor sur la ligne 5 . Comme mon nom de répertoire est abc (ajoutez votre nom)

3- Enregistrez le fichier .htaccess dans le répertoire principal (abc) de votre dossier codeignitor 

4- Remplacez uri_protocol de AUTO par PATH_INFO dans le fichier Config.php

Note: Tout d’abord, vous devez activer mod_rewrite à partir de httpd.conf d’apachi en supprimant les commentaires.

0
Salman Khan

si toutes les solutions ci-dessus ne fonctionnent pas, deux fichiers index.html et index.php seront créés dans votre dossier de projet. Renommez index.html en index_1.html et parcourez votre projet.

0
Mohsin Shoukat

Résolu en 2 étapes.

  1. Mise à jour 2 des paramètres dans le fichier de configuration application/config/config.php
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
  1. Mettre à jour le fichier .htaccess dans le dossier racine
<IfModule mod_rewrite.c>
    RewriteEngine On
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
0
John Pluto Solutions

Outre ces réponses, on peut simplement ajouter index.php ou le modifier (s’il existe déjà) - pour des raisons de sécurité, vous voulez tout de même désactiver index.php, en répertoriant les fichiers dans votre répertoire de site Web - puis modifiez le contenu en 

<?php
   header('location:your_required_starting.php'); 
?>
0
bennyhardjono

Notez la différence avec le "?" Ajouté caractère après ".php", en particulier avec CodeIgniter:

RewriteRule ^ (. *) $ Index.php/$ 1 [L]

vs.

RewriteRule ^ (. *) $ Index.php?/$ 1 [L]

Cela dépend de plusieurs autres choses. Si cela ne fonctionne pas, essayez l’autre option!

0
eyal_katz

essayez ce RewriteEngine On

        # Removes index.php from ExpressionEngine URLs
        RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
0
Kashif

Utilisez ce code. Changez la 2ème ligne car vous avez votre nom de dossier. Où le fichier index.php et l'application des dossiers, le dossier système se trouvent. La plupart des problèmes surviennent à cause de la deuxième ligne. nous ne configurons pas le nom du dossier où project est place. Important est 2ème ligne. C'est simple pour supprimer le fichier index.php. Réécrire Moteur sur RewriteBase/nom_du_projet_projet RewriteCond% {REQUEST_FILENAME}! -F RewriteCond% {REQUEST_FILENAME}! -D RewriteRule. * Index.php/$ 0 [PT, L]

#RewriteEngine on
#RewriteCond $1 !^(index\.php|images|robots\.txt)
#RewriteRule ^(.*)$ index.php/$1 [L]    

Allez dans le fichier controller/config.php. 

config ['index_url'] = '';

Référence pour plus d'étude. 

https://ellislab.com/expressionengine/user-guide/urls/remove_index.php.html

https://ellislab.com/blog/entry/fully-removing-index.php-from-urls

0
Hafiz Shehbaz Ali

Chose mineure: (facultatif)

Essayez de redémarrer votre Apache après avoir mis à jour le statut du moteur de réécriture dans vhosts en tant que Rewrite ON.

Une chose essentielle à noter:

Dans le fichier Apache vhosts, vérifiez si vous avez cette ligne de script AllowOverride None Si oui, veuillez supprimer/commenter cette ligne. 

Mon script de fichier vhosts: (Avant)

<VirtualHost *:80>
    DocumentRoot "/path/to/workspace"
    ServerName ciproject
    ErrorLog "/path/to/workspace/error.log"
    CustomLog "/path/to/workspace/access.log" common
    Directory   "/path/to/workspace">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory> 
</VirtualHost>

Mon script de fichier vhosts: (Après)

<VirtualHost *:80>
    DocumentRoot "/path/to/workspace"
    ServerName ciproject
    ErrorLog "/path/to/workspace/error.log"
    CustomLog "/path/to/workspace/access.log" common
    Directory   "/path/to/workspace">
        Options Indexes FollowSymLinks
        #AllowOverride None
        Order allow,deny
        Allow from all
    </Directory> 
</VirtualHost>

J'ai fait face au même problème, j'ai lutté pendant environ un jour, tout allait bien. Plus tard, par méthode d'essai et d'erreur, trouvé cette chose. Après avoir supprimé ceci, mon travail était terminé . L'URL ne recherche pas index.php :)

0
Lalith Kumar