Comment supprimer le "index.php"
dépassement de chaque chemin dans codeigniter quelque part au centre? Je veux nettoyer non index.php-fied URLs
?
Comment supprimer le "index.php"
dépassement de chaque chemin dans codeigniter quelque part au centre? Je veux nettoyer non index.php-fied URLs
?
Réponses:
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:
RewriteCond $1 !^\/(index\.php|assets|robots\.txt)
J'ai eu de gros problèmes avec la suppression de 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, l'étape suivante 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. C'est souvent un problème si vous utilisez une URL temporaire sur un serveur de développement, etc.:
RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]
Jouez simplement avec ces options, l'une devrait fonctionner. 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]
Recherchez ensuite 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 marché pour moi.
Si cela ne fonctionne pas davantage, essayez de remplacer la variable suivante par ces paramètres ('AUTO', 'PATH_INFO', 'QUERY_STRING', 'REQUEST_URI' et 'ORIG_PATH_INFO') un par un
$config['uri_protocol'] = 'AUTO';
Jetez un œil dans le system\application\config\config.php
fichier, il y a une variable nomméeindex_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 .htaccess
fichier
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 à / 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>
...
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 de dossier de projet "codeigniter" .its fonctionnant pour moi. Merci les gars pour votre soutien.
Étape 1 => Placez votre fichier .htaccess dans le dossier racine où se trouvent les dossiers d'application et système.
Étape 2 => Si votre chemin Web utilise un sous-dossier comme - 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 en utilisant le 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]
Je pensais juste 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]
Cela doit certainement fonctionner ... essayez
Assurez-vous que vous avez activé mod_rewrite
(je ne l'avais pas fait).
Autoriser:
sudo a2enmod rewrite
Remplacez également AllowOverride None
parAllowOverride 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]
actions
: stackoverflow.com/questions/14419757/…
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Ceci est un .htaccess pour l'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 besoin ou non de «/ projectFolder» en fonction de la configuration de votre structure de dossiers. Bonne chance!
Utilisez mod_rewrite
comme indiqué dans ce didacticiel du wiki CI.
En tant que fichier .htaccess, une bonne option est d'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.
Il existe deux façons de résoudre index.php dans le chemin de l'url pour codeigniter
1: Dans config / config.php Changez le code:
$config['index_page'] = 'index.php';
à
$config['index_page'] = '';
2: Créez .htacess dans le chemin racine s'il n'est pas 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 archivez votre configuration Apache rewrite_module OU mod_rewrite est activé.Sinon, veuillez activer. (Meilleure approche)!
J'ai testé cela sur apache2 sur de nombreux hébergements différents et cela fonctionne très bien.
utilisez cet htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
assurez-vous d'avoir enabled mod_rewirte
avec unphpinfo();
puis faites 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 fichier par l'un des fichiers $config['uri_protocol']='AUTO'
listés à l'intérieur application/config/config.php
à la ligne 40/54:
parfois j'ai utilisé: REQUEST_URI
au lieu de AUTO
ou "QUERY_STRING"
pour les hébergements goDaddy
Regardez dans le \application\config\config.php
fichier, il y a une variable nomméeindex_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 .htaccess
fichier 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, j'espère que vous aussi.
Si vous êtes sous Linux et que vous utilisez un serveur apache2, nous devrons peut-être remplacer le fichier apache2.conf également à côté des modifications apportées au fichier .htaccess. Trouvez le fichier de configuration apache2 sur /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
placez un fichier .htaccess dans votre répertoire Web racine
Quoi que vous fassiez - si ce qui précède n'est pas satisfait - cela ne fonctionnera pas. Habituellement, il se trouve dans le dossier System, il devrait être à la racine. À votre santé!
application
répertoire au lieu de la racine.
J'ai essayé de nombreuses solutions mais celle que j'ai trouvé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]
Cela supprimera l'index.php de l'URL si nécessaire.
J'utilise ces lignes dans le .htaccess
fichier; 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
Cela vous aidera à coller ce code dans le dossier de l'application dans le fichier .htacess
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>
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!
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, par exemple nom de domaine / dossier / index.php.
J'espère que cela fonctionne pour vous. Merci.
Copiez 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]
<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>
Étape 1 :
Ajoutez 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 la configuration de codeigniter
$config['base_url'] = '';
$config['index_page'] = '';
Étape 3 :
Autoriser le remplacement de htaccess dans la configuration Apache (commande)
sudo nano /etc/apache2/apache2.conf et éditez le fichier et changez en
AllowOverride All
pour le dossier www
Étape 4 :
Réécriture de mod apache activée (commande)
réécriture sudo a2enmod
Étape 5:
Redémarrez Apache (commande)
sudo /etc/init.d/apache2 restart