Comment puis-je supprimer le "index.php"
qui dépasse dans chaque chemin d'accès de codeigniter quelque part au centre? Je veux nettoyer non index.php-fied URLs
?
Si vous utilisez Apache, placez un fichier .htaccess dans votre répertoire Web racine contenant les éléments suivants:
RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Une autre bonne version se trouve ici:
J'ai eu de gros problèmes avec la suppression du fichier index.php. En règle générale, le .htaccess ci-dessous a été testé sur plusieurs serveurs et fonctionne généralement:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
<Files "index.php">
AcceptPathInfo On
</Files>
Si vous n’avez pas de chance avec cela, la prochaine étape consiste à ajuster votre fichier de configuration. Essayez certains des autres protocoles URI, par exemple
| 'AUTO' Default - auto detects
| 'PATH_INFO' Uses the PATH_INFO
| 'QUERY_STRING' Uses the QUERY_STRING
| 'REQUEST_URI' Uses the REQUEST_URI
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO
$config['uri_protocol'] = 'ORIG_PATH_INFO';
Si vous n'avez toujours pas de chance, essayez de modifier la règle de réécriture pour inclure votre sous-dossier. Cela pose souvent un problème si vous utilisez une URL temporaire sur un serveur de développement, etc.:
RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]
Il suffit de jouer avec ces options, il faut travailler. Assurez-vous également que votre fichier d'index est défini sur:
$config['index_page'] = '';
Bonne chance!
Placez le fichier .htaccess dans le répertoire racine de l'application, ainsi que le fichier index.php. (Vérifiez si l'extension htaccess est correcte, Bz htaccess.txt n'a pas fonctionné pour moi.)
Et ajoutez les règles suivantes au fichier .htaccess,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Puis trouvez la ligne suivante dans votre fichier application/config/config.php
$config['index_page'] = 'index.php';
Définissez la variable vide comme ci-dessous.
$config['index_page'] = '';
Ça y est, ça a fonctionné pour moi.
Si cela ne fonctionne pas, essayez de remplacer la variable suivante par ces paramètres ('AUTO', 'PATH_INFO', 'QUERY_STRING', 'REQUEST_URI' et 'ORIG_PATH_INFO')
$config['uri_protocol'] = 'AUTO';
Regardez dans le fichier system\application\config\config.php
, il y a une variable nommée index_page
ça devrait ressembler à ça
$config['index_page'] = "index.php";
changez le en
$config['index_page'] = "";
Ensuite, comme mentionné, vous devez également ajouter une règle de réécriture au fichier .htaccess
.
Remarque: dans CodeIgniter v2, ce fichier a été déplacé du dossier système vers application\config\config.php
.
Toutes les méthodes ci-dessus ont échoué pour moi, puis j'ai constaté que je ne changeais pas AllowOverride None en AllowOverride All dans mon fichier hôte virtuel à l'adresse / etc/Apache2/sites-available/default.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All <---- replace None with All
</Directory>
<Directory /var/www >
Options Indexes FollowSymLinks MultiViews
AllowOverride All <--- replace None with All
Order allow,deny
allow from all
</Directory>
...
É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]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /codeigniter/index.php/$0 [PT,L]
après avoir changé RewriteRule. * index.php/$ 0 [PT, L] avec le nom du dossier de projet "codeigniter" .si fonctionne pour moi. Merci les gars pour votre soutien.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Cela doit absolument marcher .. essayez
Juste pensé que je pourrais ajouter
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
serait le .htaccess et assurez-vous de modifier votre variable application/config.php de la manière suivante:
remplacer
$config['uri_protocol'] = “AUTO”
avec
$config['uri_protocol'] = “REQUEST_URI”
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Utilisez mod_rewrite
comme indiqué dans ce tutoriel à partir du wiki CI.
Ceci est un .htaccess pour un de mes projets CI:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L]
La dernière ligne devrait vous donner ce dont vous avez besoin, bien que vous ayez éventuellement besoin de '/ projectFolder' en fonction de la structure de votre dossier Bonne chance!
Assurez-vous d'avoir activé mod_rewrite
(ce que je n'avais pas fait).
Autoriser:
Sudo a2enmod rewrite
Aussi, remplacez AllowOverride None
par AllowOverride All
Sudo gedit /etc/Apache2/sites-available/default
Enfin ...
Sudo /etc/init.d/Apache2 restart
Mon .htaccess est
RewriteEngine on
RewriteCond $1 !^(index\.php|[assets/css/js/img]|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
Il y a deux façons de résoudre index.php dans le chemin de l'URL pour codeigniter
1: Dans config/config.php Changer le code:
$config['index_page'] = 'index.php';
à
$config['index_page'] = '';
2: Créez le fichier .htacess dans le chemin racine s'il n'a pas été créé, copiez le code suivant: -
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Enregistrez-le puis vérifiez dans votre configuration Apache rewrite_module OR mod_rewrite est activé.Si ce n'est pas le cas, activez-le ... (meilleure approche)!
En tant que fichier .htaccess, une bonne option consiste à utiliser celui fourni par Kohana Framework :
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>
# Protect application and system files from being viewed
RewriteRule ^(?:application|system)\b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
C'est un .htaccess bien pensé qui fonctionne.
Regardez dans le fichier \application\config\config.php
, il y a une variable nommée index_page
ça devrait ressembler à ça
$config['index_page'] = "index.php";
changez le en
$config['index_page'] = "";
Ensuite, comme mentionné, vous devez également ajouter une règle de réécriture au fichier .htaccess
comme ceci:
RewriteEngine on
RewriteCond $1 !^(index\\.php|resources|robots\\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Cela fonctionne pour moi, espérons que vous aussi.
j'ai testé cela sur Apache2 sur de nombreux hébergements et cela fonctionne très bien.
utiliser ce htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
assurez-vous que vous avez enabled mod_rewirte
avec une phpinfo();
faites ensuite ceci dans config/config.php:
$config['index_url'] = '';
|
| 'AUTO' Default - auto detects
| 'PATH_INFO' Uses the PATH_INFO
| 'QUERY_STRING' Uses the QUERY_STRING
| 'REQUEST_URI' Uses the REQUEST_URI
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';
si cela ne fonctionne pas encore, essayez de remplacer le $config['uri_protocol']='AUTO'
par l'un des fichiers application/config/config.php
répertoriés à la ligne 40/54:
parfois, j'ai utilisé: REQUEST_URI
au lieu de AUTO
ou "QUERY_STRING"
pour les hébergements goDaddy
Si vous êtes sur Linux et utilisez le serveur Apache2, il se peut que nous devions remplacer le fichier Apache2.conf également à côté des modifications apportées au fichier .htaccess. Recherchez le fichier de configuration Apache2 dans /etc/Apache2/Apache2.conf .
Répertoire de recherche/var/www/Modifier AllowOverride None -> AllowOverride All
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory
J'ai essayé de nombreuses solutions, mais celle que j'ai proposée est la suivante:
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots \.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]
Ceci enlèvera le fichier index.php de l'URL si nécessaire.
J'utilise ces lignes dans le fichier .htaccess
; que je place dans le dossier racine
RewriteEngine on
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
Ensuite, je peux accéder à http://example.com/controller/function/parameter
au lieu de http://example.com/index.php/controller/function/parameter
place un fichier .htaccess dans votre répertoire Web racine
Quoi que vous fassiez, si cela n’est pas respecté, cela ne fonctionnera pas. Habituellement, c'est dans le dossier Système, il devrait être à la racine. À votre santé!
Celui-ci m'a fait la magie complète:
RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
J'espère que ça aide!
é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 la configuration d'Apache (commande)
Sudo nano /etc/Apache2/Apache2.conf et éditez le fichier & changez pour
AllowOverride All
pour le dossier www
étape 4:
Activation de la réécriture du mod Apache (Commande)
Sudo a2enmod réécrire
étape 5:
Redémarrer Apache (Commande)
Sudo /etc/init.d/Apache2 restart
Cela vous aidera Collez ce code dans le dossier de l'application dans le fichier .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
<Files "index.php">
AcceptPathInfo On
</Files>
<IfModule mod_php5.c>
php_value short_open_tag 1
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /Foldername of your ci/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Copier coller le code suivant dans votre .htaccess
RewriteEngine on
Options -Indexes
RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Salut celui-ci m'a travaillé
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
ainsi que cette
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
où le dossier est le nom du sous-dossier si cette application codeigniter est hébergée en tant que sous-domaine ex. nomdomaine/folder/index.php.
J'espère que cela fonctionne pour vous. Merci.