php - page - limpiar url codeigniter
Problema de CodeIgniter multi-aplicaciĆ³n.htaccess (1)
Tengo un problema con el archivo .htaccess de CodeIgniter y espero que alguien me pueda ayudar. No sé expresiones regulares o cómo usar .htaccess, ¡soy muy nuevo con esto!
Mi problema es:
Tengo esta estructura de archivos (multi aplicación):
- application
- admin
- site
- system
- index.php
- admin.php
Y este .htaccess (que funciona bien en localhost!)
Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index/.php|images|robots/.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Lo que quiero hacer es:
Acceda a mi sitio web (frontend) con http://www.mydomain.com/ Y a mi administrador (back-end) como http://www.mydomain.com/admin/
No sé por qué funciona bien en mi servidor local.
Espero que alguien pueda ayudarme.
UPDATE
Lo tengo para trabajar usando esto:
RewriteEngine on
# If the user types "index.php" or "admin.php".
RewriteCond $1 !^(index/.php|admin/.php|images|robots/.txt)
# If the user types just "admin".
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin$ admin/.php [L,QSA]
# If the user enter in any admin section, like "admin/section".
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin//(.*)$ admin/.php/$1 [L,QSA]
# If the user types any site section, like "site/section".
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index/.php/$1 [L,QSA]
De esta forma puedo acceder a http://www.mydomain.com/admin o http://www.mydomain.com/admin/any-section (que apunta a "admin.php" en el directorio raíz)
Y puedo acceder a http://www.mydomain.com/ o http://www.mydomain.com/any-section (que apunta a "index.php" en el directorio raíz)
¡Gracias por la ayuda!
En primer lugar, esto es redundante:
RewriteCond $1 !^(index/.php|images|robots/.txt)
porque sus otras condiciones ya se ocupan de los archivos y directorios existentes, por lo que le sugiero que los elimine.
Su regla de reescritura es incorrecta si desea que / admin reescriba a admin.php, con su regla actual resultará en /index.php/admin. No mencionaste si ese es el problema, si es así:
RewriteRule ^/admin$ admin.php [L,QSA]
RewriteRule ^(.*) index.php/$1 [L,QSA]
También puede depurar la reescritura utilizando RewriteLog: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog
Si eso no lo soluciona, describa el comportamiento actual y lo que espera, de lo contrario, es difícil ayudarlo.