htaccess - CodeIgniter eliminando index.php de url
index.php codeigniter (25)
Mis URL actuales se parecen a [mysite]index.php/[rest of the slug]
.
Quiero quitar index.php
de estas URL.
mod_rewrite
está habilitado en mi servidor apache2. En config
, $config[''index_page''] = '''';
Mi archivo de raíz de código .htaccess
contiene,
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Pero aún así no está funcionando. ¿Dónde estoy equivocado?
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 utiliza una subcarpeta como - yourdomain.com/project/ - luego 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 utiliza una carpeta raíz como - tudominio.com - luego use el siguiente código en el archivo htaccess
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index/.php|images|robots/.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
hacer archivo
.htaccess
y poner este códigoRewriteEngine on RewriteCond $1 !^(index/.php|resources|robots/.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA]
cambio
$config[''index_page''] = '''';
eliminar index.php
presente en el archivo config.php
- reescriba desde su servidor.
Además de estas respuestas, uno puede simplemente agregar index.php o editarlo (si ya está allí) - por seguridad desea deshabilitar index.php de todos modos, desde listar los archivos en el directorio de su sitio web - luego cambiar el contenido en
<?php
header(''location:your_required_starting.php'');
?>
Agregue esta línea de códigos en su archivo .htaccess:
RewriteEngine on
RewriteCond $1 !^(index/.php|images|robots/.txt)
RewriteRule ^(.*)$ /myproject/index.php/$1 [L]
Donde ''mi proyecto es el nombre de su carpeta de proyecto.
Puede leer más sobre CodeIgniter o puede descargar el archivo .htaccess desde aquí
Bueno, todas estas respuestas son buenas, pero para un novato (que es lo primero) son confusas. Hay otros archivos htaccess que residen en el controlador pero tenemos que editar o agregar el htaccess en la carpeta principal del proyecto.
Esta es su carpeta codeigniter, donde el archivo reside como aplicación, sistema, activos, cargas, etc.
Your_project_folder/
application/
assets/
cgi-bin/
system/
.htaccess---->(Edit this file if not exist than create it)
index.php
Cambie este archivo como se indica a continuación:
<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>
y sí, por supuesto, necesita cambiar dos líneas de código en la aplicación / 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";
Cosa menor: (Opcional)
Intente reiniciar su Apache después de actualizar el estado del motor de reescritura en vhosts como
Rewrite ON
.
Una cosa crítica a tener en cuenta:
En el archivo de vhosts de Apache, compruebe si tiene esta línea de script
AllowOverride None
caso afirmativo, elimine / comente esta línea.
Script de mi archivo de vhosts: (anterior)
<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>
Script de mi archivo de vhosts: (despué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>
Me enfrenté al mismo problema, luché durante alrededor de 1 día, todo estaba bien. Más tarde, por el método de prueba y error, encontré esto. Después de eliminar esto, mi trabajo se realizó. La URL ahora no busca a index.php :)
Creo que su configuración es buena, pero lo que hace es extraviar su archivo htaccess y agregar su htaccess a su archivo de proyecto
project_folder-> htaccess
y agrega este código a tu htaccess
RewriteEngine on
RewriteCond $1 !^(index/.php|resources|robots/.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Hay dos pasos:
1) Editar config.php
$config[''index_page''] = ''index.php'';
A
$config[''index_page''] = ''’;
2) Crear / editar archivo .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Prueba este. Te puede ayudar ya que funciona para mí.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
coloque el código en su archivo htaccess raíz. y asegúrese de tener
$config[''index_page''] = '''';
en tu archivo de configuración
Por favor, avíseme si tiene algún problema.
Pruebe lo siguiente
Abra config.php y haga lo siguiente reemplaza
$config[''index_page''] = "index.php"
a
$config[''index_page''] = ""
En algunos casos, la configuración predeterminada para uri_protocol
no funciona correctamente. Simplemente reemplace
$config[''uri_protocol''] ="AUTO"
por
$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]
Nota: el código .htaccess varía según el servidor de alojamiento. En algún servidor de alojamiento (p. Ej .: Godaddy) ¿necesita usar un extra? en la última línea del código anterior. La siguiente línea será reemplazada por la última línea en el caso aplicable:
// Replace last .htaccess line with this line
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
Siga estos pasos su problema será resuelto
1- Descarga el archivo .htaccess desde aquí https://www.dropbox.com/s/tupcu1ctkb8pmmd/.htaccess?dl=0
2- Cambie el nombre del directorio CodeIgnitor en la línea # 5. como mi nombre de directorio es abc (agrega tu nombre)
3- Guarde el archivo .htaccess en el directorio principal (abc) de su carpeta codeignitor
4- Cambiar uri_protocol de AUTO a PATH_INFO en el archivo Config.php
Nota: Antes que nada debes habilitar mod_rewrite desde httpd.conf de apachi eliminando los comentarios
Solo se requieren tres pasos para eliminar index.php de la URL en Codeigniter
1) Cree el archivo .htacess en paralelo al titular de la aplicación y simplemente copie el siguiente código:
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) Cambie $ config [''index_page''] a espacio en blanco en config.php en la carpeta de la aplicación como se muestra a continuación:
$config[''index_page''] = '''';
3) Habilita "rewrite_module" de apache.
Reinicia tu apache y listo.
Detalles: http://sforsuresh.in/removing-index-php-from-url-of-codeigniter-in-wamp/
Tanto desarrollo como producción
# 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]
Usa este código Cambia la segunda línea ya que tienes el nombre de tu carpeta. Donde se encuentra la aplicación index.php de archivos y carpetas, la carpeta del sistema. La mayoría de los problemas ocurren debido a la segunda línea. no configuramos el nombre de la carpeta donde se ubica el proyecto. Importante es la 2da línea. Esto es simple de eliminar el index.php. RewriteEngine en RewriteBase / project_folder_name 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]
Ir al archivo controller / config.php.
config [''index_url''] = '''';
Referencia para más estudio.
https://ellislab.com/expressionengine/user-guide/urls/remove_index.php.html
https://ellislab.com/blog/entry/fully-removing-index.php-from-urls
antes que nada, tienes que reiniciar el motor del servidor Apache. Este enlace te ayudará para eso
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]
este será su archivo .htaccess. ahora pruébalo. Esta configuración funciona para mí.
crea un nuevo archivo .htaccess en el directorio raíz.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
en su htaccess use esto,
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]
Espero que esto ayude.
puede ir al archivo config / config.php y eliminar el valor de index.php de esta variable
$config[''index_page''] = ''index.php''; // delete index.php
cree el archivo .htaccess y pegue este código en él.
<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>
Buena oportunidad
puede ir al archivo application / config / config.php y eliminar index.php
$config[''index_page''] = ''index.php''; // delete index.php
Cambiar a
$config[''index_page''] = '''';
si no funciona toda la solución anterior, entonces en la carpeta del proyecto habrá dos archivos index.html e index.php, cambiará el nombre de index.html a index_1.html y explorará tu proyecto.
Paso 1 :
Agregar 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 codeigniter
$config[''base_url''] = '''';
$config[''index_page''] = '''';
Paso 3 :
Permitir reemplazar htaccess en la configuración de Apache (comando)
sudo nano /etc/apache2/apache2.conf
y edita el archivo y cambia a
AllowOverride All
para la carpeta www
Etapa 4 :
Habilitado reescribir mod de apache (comando)
sudo a2enmod rewrite
Paso 5:
Reiniciar Apache (Comando)
sudo /etc/init.d/apache2 restart
Paso: -1 Abra la carpeta "application / config" y abra el archivo "config.php". encuentre y reemplace el siguiente código en el archivo config.php.
//find the below code
$config[''index_page''] = "index.php"
//replace with the below code
$config[''index_page''] = ""
Paso: -2 Vaya a su carpeta CodeIgniter y cree .htaccess
Path:
Your_website_folder/
application/
assets/
system/
.htaccess <——— this file
index.php
Paso: -3 Escriba el código a continuación en el archivo .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Paso: -4 En algunos casos, la configuración predeterminada para uri_protocol no funciona correctamente. Para resolver este problema solo abra el archivo "application / config / config.php", luego busque y reemplace el código siguiente
//find the below code
$config[''uri_protocol''] = "AUTO"
//replace with the below code
$config[''uri_protocol''] = "REQUEST_URI"
Eso es todo menos en el servidor de wamp, no funciona porque rewrite_module está deshabilitado de forma predeterminada, por lo que tenemos que habilitarlo. para esto haz lo siguiente
- Haga clic con el botón izquierdo en el icono WAMP
- apache
- Módulos Apache
- Haz clic izquierdo en rewrite_module
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.
+ 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''] = '''';
Mire estos videos para referencia https://www.youtube.com/watch?v=HFG2nMDn35Q
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
utilizar
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$1 [PT,L]
si tiene url en este orden site.com/index.php/class/method/id
NB: eliminar index.php en config.php debe ser config [index_page] = ""
NB: observe la diferencia en la última línea en lugar de $ 0 use $ 1