2011-07-20 19 views
6

Estoy tratando de eliminar el index.php de mis URL de CI, pero al seguir las instrucciones parece que no funciona.Uso de htaccess para eliminar codeigniter index.php en un subdirectorio

Tengo una instalación codeigniter ejecutándose en un subdirectorio. Hay un controlador predeterminado configurado en la configuración de rutas llamado main, y otro controlador llamado 'create'. El valor predeterminado funciona bien, pero yendo a/create devuelve un error 324 que dice Sin datos recibidos. Mi htaccess se ve así:

<IfModule mod_rewrite.c> 

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} ^system.* 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

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

</IfModule> 

<IfModule !mod_rewrite.c> 
    ErrorDocument 404 /index.php 
</IfModule> 
+0

Una salida de su apache error.log sería útil para resolver su problema. – Marko

Respuesta

24

Esto debería ser suficiente:

<IfModule mod_rewrite.c> 
RewriteEngine On 

#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 
#This last condition enables access to the images and css folders, and the robots.txt file 
RewriteCond $1 !^(index\.php|public|images|robots\.txt|css) 
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 
+1

Esto funcionó muy bien. ¡Gracias! – Robin

+0

Y el ganador es ... esto. – dlopezgonzalez

+0

y no te olvides de cambiar la configuración de Apache como se menciona en stackoverflow.com/a/14807463/1537413 – Dika

7

Esto es lo que uso. Mi CodeIgniter también se ejecuta en un subdirectorio.

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|swf|uploads|js|css|robots\.txt) 
RewriteRule ^(.*)$ /ci/index.php/$1 [L] 
+4

¡He estado buscando el mod_rewrite correcto por horas y este es el que finalmente funcionó para mí! Todo lo que tenía que hacer era cambiar 'ci /' a 'mysubfolder /' –

5

.htaccess complemento:

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

Id a application/config/config.php y desactive la página de índice de valor de configuración:

// Old 

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

// New 

$config['index_page'] = ""; 

Resuelto Mi problema espero que otros también .. . :)

+0

Estoy intentando el código de la guía del usuario codeigniter y no funcionó, pero ahora funciona como una magia gracias señor – Belajar

+0

Esto funcionó para mí, ¡Gracias! – Robin

1

En ocasiones resulta necesario para permitir que el módulo de reescritura, ejecute "apache2 permiten reescritura del módulo":

sudo a2enmod rewrite 

es necesario reiniciar el servidor web para aplicar los cambios:

sudo service apache2 restart 

Luego sigue la respuesta de Sofía.

Cuestiones relacionadas