¿Cómo "index.php"
elimino lo que sobresale en cada ruta en codeigniter en algún lugar del centro? Quiero limpio no index.php-fied URLs
?
¿Cómo "index.php"
elimino lo que sobresale en cada ruta en codeigniter en algún lugar del centro? Quiero limpio no index.php-fied URLs
?
Respuestas:
Si está utilizando Apache, coloque un archivo .htaccess en su directorio web raíz que contenga lo siguiente:
RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Otra buena versión se encuentra aquí:
RewriteCond $1 !^\/(index\.php|assets|robots\.txt)
Tuve algunos problemas importantes al eliminar index.php. Como regla general, el .htaccess a continuación se ha probado en varios servidores y generalmente funciona:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
<Files "index.php">
AcceptPathInfo On
</Files>
Si no tiene suerte con eso, el siguiente paso es ajustar su archivo de configuración. Pruebe algunos de los otros protocolos URI, por ejemplo
| '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 aún no tiene suerte, intente cambiar la regla de reescritura para incluir su subcarpeta. Esto suele ser un problema si usa una URL temporal en un servidor de desarrollo, etc.
RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]
Simplemente juegue con estas opciones, una debería funcionar. Además, asegúrese de que su archivo de índice esté configurado en:
$config['index_page'] = '';
¡Buena suerte!
Tenga el archivo .htaccess en el directorio raíz de la aplicación, junto con el archivo index.php. (Verifique si la extensión htaccess es correcta, Bz htaccess.txt no funcionó para mí).
Y agregue las siguientes reglas al archivo .htaccess,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Luego busque la siguiente línea en su archivo application / config / config.php
$config['index_page'] = 'index.php';
Establezca la variable vacía como se muestra a continuación.
$config['index_page'] = '';
Eso es todo, funcionó para mí.
Si no funciona, intente reemplazar la siguiente variable con estos parámetros ('AUTO', 'PATH_INFO', 'QUERY_STRING', 'REQUEST_URI' y 'ORIG_PATH_INFO') uno por uno
$config['uri_protocol'] = 'AUTO';
Eche un vistazo al system\application\config\config.php
archivo, hay una variable llamadaindex_page
Debe tener un aspecto como este
$config['index_page'] = "index.php";
cámbialo a
$config['index_page'] = "";
Luego, como se mencionó, también debe agregar una regla de reescritura al .htaccess
archivo
Nota: en CodeIgniter v2, este archivo se movió fuera de la carpeta del sistema a application\config\config.php
Todos los métodos anteriores fallaron para mí y luego descubrí que no estaba cambiando AllowOverride None a AllowOverride All en mi archivo de host virtual en / 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]
después de cambiar RewriteRule. * index.php / $ 0 [PT, L] con el nombre de la carpeta del proyecto "codeigniter". Funciona para mí. Gracias chicos por su apoyo.
Paso 1 => Coloque su archivo .htaccess en la carpeta raíz donde existen las carpetas de la aplicación y del sistema.
Paso 2 => Si su ruta web usa una subcarpeta como - sudominio.com/proyecto/ - entonces use el siguiente código en el archivo htaccess
RewriteEngine on
RewriteBase /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]
Si su ruta web usa una carpeta raíz como sudominio.com, use el siguiente código en el archivo htaccess
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Solo pensé que podría agregar
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
sería el .htaccess y asegúrese de editar su variable application / config.php de la siguiente manera:
reemplazar
$config['uri_protocol'] = “AUTO”
con
$config['uri_protocol'] = “REQUEST_URI”
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Esto definitivamente debe funcionar ... inténtalo
Asegúrese de haber habilitado mod_rewrite
(yo no lo había hecho).
Para permitir:
sudo a2enmod rewrite
Además, reemplace AllowOverride None
porAllowOverride All
sudo gedit /etc/apache2/sites-available/default
Finalmente ...
sudo /etc/init.d/apache2 restart
Mi .htaccess es
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]
Este es un .htaccess para uno de mis proyectos de CI:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L]
La última línea debería darle lo que necesita, aunque puede que necesite o no '/ projectFolder' dependiendo de cómo esté configurada la estructura de su carpeta. ¡Buena suerte!
Utilice mod_rewrite
como se indica en este tutorial de la wiki de CI.
Como archivo .htaccess, una buena opción es utilizar el proporcionado por 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]
Es un .htaccess bien pensado que simplemente funciona.
Hay dos formas de resolver index.php en la ruta de la URL para codeigniter
1: En config / config.php Cambiar código:
$config['index_page'] = 'index.php';
a
$config['index_page'] = '';
2: Cree .htacess en la ruta raíz si no se creó, copie el siguiente código: -
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Guárdelo y luego verifique su configuración de Apache rewrite_module O mod_rewrite está habilitado Si no es así, habilítelo. (Mejor enfoque)!
Probé esto en apache2 en muchos alojamientos diferentes y funciona muy bien.
usa este htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
asegúrese de tener enabled mod_rewirte
con unphpinfo();
luego haz esto en 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 aún no funciona, intente cambiar $config['uri_protocol']='AUTO'
a uno de los application/config/config.php
archivos internos enumerados en la línea 40/54:
a veces usé: en REQUEST_URI
lugar de AUTO
o "QUERY_STRING"
para hospedajes de goDaddy
Mire en el \application\config\config.php
archivo, hay una variable llamadaindex_page
Debe tener un aspecto como este
$config['index_page'] = "index.php";
cámbialo a
$config['index_page'] = "";
Luego, como se mencionó, también debe agregar una regla de reescritura al .htaccess
archivo de esta manera:
RewriteEngine on
RewriteCond $1 !^(index\\.php|resources|robots\\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Funciona para mí, espero que tú también.
Si está en Linux y usa el servidor apache2, es posible que debamos anular el archivo apache2.conf también junto a los cambios en el archivo .htaccess. Busque el archivo de configuración de apache2 en /etc/apache2/apache2.conf .
Buscar directorio / var / www / Cambiar AllowOverride Ninguno -> AllowOverride All
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory
coloque un archivo .htaccess en su directorio web raíz
Cualquier ajuste que hagas, si no se cumple lo anterior, no funcionará. Por lo general, está en la carpeta Sistema, debería estar en la raíz. ¡Salud!
application
directorio en lugar de en la raíz.
He probado muchas soluciones, pero la que se me ocurrió es esta:
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]
Esto eliminará el index.php de la URL según sea necesario.
Utilizo estas líneas en el .htaccess
archivo; que coloco en la carpeta raíz
RewriteEngine on
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
Entonces puedo acceder a http://example.com/controller/function/parameter
en lugar de http://example.com/index.php/controller/function/parameter
Esto le ayudará a pegar este código en la carpeta de la aplicación en el archivo .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>
Este me hizo la magia completa:
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]
¡Espero eso ayude!
Hola este me funciono
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
tan bien como esto
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
donde la carpeta es el nombre de la subcarpeta si esta aplicación de codeigniter está alojada como un subdominio, por ejemplo, nombre de dominio / carpeta / index.php.
Espero que eso te funcione. Gracias.
Copie el código siguiente pasado en su .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>
Paso 1 :
Agregue esto en el archivo htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
Paso 2 :
Eliminar index.php en la configuración de codeigniter
$config['base_url'] = '';
$config['index_page'] = '';
Paso 3 :
Permitir anular htaccess en la configuración de Apache (comando)
sudo nano /etc/apache2/apache2.conf y edite el archivo y cambie a
AllowOverride All
para carpeta www
Paso 4 :
Habilitado la reescritura de mod de apache (comando)
sudo a2enmod reescribir
Paso 5:
Reiniciar Apache (comando)
sudo /etc/init.d/apache2 restart