Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] .htaccess - cuarto parametro

Estas en el tema de .htaccess - cuarto parametro en el foro de PHP en Foros del Web. Hola amigos, le comento que en mi .htaccess tengo esto: #solo controlador RewriteRule ^([a-zA-Z0-9_-]+)\/$ index.php?accion=$1 [S] #dos parámetros RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/*$ index.php?accion=$1&ide=$2 [S] #3 parámetros RewriteRule ...
  #1 (permalink)  
Antiguo 24/03/2020, 18:47
 
Fecha de Ingreso: septiembre-2014
Ubicación: Argentina
Mensajes: 8
Antigüedad: 5 años, 6 meses
Puntos: 2
Sonrisa .htaccess - cuarto parametro

Hola amigos, le comento que en mi .htaccess tengo esto:

#solo controlador
RewriteRule ^([a-zA-Z0-9_-]+)\/$ index.php?accion=$1 [S]

#dos parámetros
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/*$ index.php?accion=$1&ide=$2 [S]

#3 parámetros
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/.*$ index.php?accion=$1&ide=$2&ide2=$3 [L]


ahora necesito una regla que me reciba 4 parametros intente con esto pero no me funciona

#4 parámetros
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/.*$ index.php?accion=$1&ide=$2&ide2=$3&ide3=$4 [L]

Hasta 3 parametros me funciona pero cuando intento con el 4to parametro no logro hacer que funcione. Alguna idea? Desde ya muchas gracias. Saludos!
  #2 (permalink)  
Antiguo 24/03/2020, 23:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.032
Antigüedad: 11 años, 7 meses
Puntos: 2206
Respuesta: .htaccess - cuarto parametro

Y si lo pones completo encerrado entre etiquetas de código?
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 24/03/2020, 23:33
 
Fecha de Ingreso: abril-2006
Mensajes: 379
Antigüedad: 14 años
Puntos: 80
Respuesta: .htaccess - cuarto parametro

Cita:
Iniciado por internetdescartable Ver Mensaje
Hola amigos, le comento que en mi .htaccess tengo esto:

#solo controlador
RewriteRule ^([a-zA-Z0-9_-]+)\/$ index.php?accion=$1 [S]

#dos parámetros
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/*$ index.php?accion=$1&ide=$2 [S]

#3 parámetros
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/.*$ index.php?accion=$1&ide=$2&ide2=$3 [L]


ahora necesito una regla que me reciba 4 parametros intente con esto pero no me funciona

#4 parámetros
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/.*$ index.php?accion=$1&ide=$2&ide2=$3&ide3=$4 [L]

Hasta 3 parametros me funciona pero cuando intento con el 4to parametro no logro hacer que funcione. Alguna idea? Desde ya muchas gracias. Saludos!
y que URL es la que da problemas

por que segun tu htaccess

solo aceptaria

http://tuweb/accion/uno/dos/tres/cuatro

pero no

http://tuweb/accion/uno/dos/tres/archivo.js

usa esta web para validar Expresiones simples, osea tienes que poner solo las lineas ciriticas

https://htaccess.madewithlove.be
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #4 (permalink)  
Antiguo 25/03/2020, 17:40
 
Fecha de Ingreso: septiembre-2014
Ubicación: Argentina
Mensajes: 8
Antigüedad: 5 años, 6 meses
Puntos: 2
Respuesta: .htaccess - cuarto parametro

Mi problema es que no puedo acceder a imágenes que tengo guardada en una carpeta determinada. A partir de ahí en adelante, mientras la ruta es mas y mas larga ya no puedo acceder a ninguna foto. Lo mismo me sucede con archivos de tipo css o js.

De determinada profundidad de ruta en adelante pierdo acceso.
Lo que hice fue eliminar el .htaccess y puedo acceder donde quiera, evidentemente el problema esta allí. Entonces supuse que sería por las reglas de RewriteRule que tengo en dicho archivo .htaccess

Probé en la web que me indicaron aquí en el post (https://htaccess.madewithlove.be) y pude comprobar que mis RewriteRule están correctas. O sea que puedo decir que logro acceder a URLs con hasta 4 parámetros sin problemas, el inconveniente surge cuando quiero acceder a archivos, ya sean jpg, png, js, css, etc...

Por ejemplo: accedo sin problemas a una URL tal como

proyecto/editcliente/120/1

o

proyecto/editcliente/120/1/2/

pero no puedo acceder a un archivo png, por ejemplo:

proyecto/public/fotos/cliente120/imagen.png

y SI puedo acceder a

proyecto/public/fotos/imagen.png

es decir una carpeta mas arriba.


Es tal como has dicho tuadmin, puedo acceder a

http://tuweb/accion/uno/dos/tres/cuatro

pero no a

http://tuweb/accion/uno/dos/tres/archivo.js
  #5 (permalink)  
Antiguo 25/03/2020, 20:41
 
Fecha de Ingreso: abril-2006
Mensajes: 379
Antigüedad: 14 años
Puntos: 80
Respuesta: .htaccess - cuarto parametro

esta opcion es antigua, por que recuerdo que habia una regla htaccess que decia que se aplique la Regla MENOS A CARPETAS EXISITENTES

en teoria esta regla indica que no se aplicara las reglas URL amigables a Urls que comienzen Con /Test o con /My-folder


Código .htaccess:
Ver original
  1. RewriteCond% {REQUEST_URI}! ^/Test /
  2. RewriteCond% {REQUEST_URI}! ^/My-folder /


http://tuweb/Test/archivos/varios.js
http://tuweb/otro/archivos/varios.js

asi que toca que experimentes y pruebes y adaptes esa regla a tus necesidades
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #6 (permalink)  
Antiguo 26/03/2020, 10:42
 
Fecha de Ingreso: septiembre-2014
Ubicación: Argentina
Mensajes: 8
Antigüedad: 5 años, 6 meses
Puntos: 2
Respuesta: .htaccess - cuarto parametro

Muchismas gracias Tuadmin, intentare lo que tu dices, luego te cuento como me fue o si me surgio algun otro problema y en caso que todo este bien, dare por solucionado el tema. Gracias tambien a Triby por su ayuda. Saludos!
  #7 (permalink)  
Antiguo 26/03/2020, 11:39
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.032
Antigüedad: 11 años, 7 meses
Puntos: 2206
Respuesta: .htaccess - cuarto parametro

Tomando la nota de tuadmin, si quieres algo más general y flexible puedes incluir este par de condiciones antes de las reglas:

Código:
# Solo si no existe archivo (!-f) o carpeta (!-d)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#solo controlador
RewriteRule ^([a-zA-Z0-9_-]+)\/$ index.php?accion=$1 [S]

# -- El resto de reglas
Esto te permitirá utilizar cualquier estructura de directorios y, por supuesto, tendrás que asegurarte de que no se puedan acceder, arreglando reglas para no indexar o simplemente incluyendo un archivo index.html en cada carpeta.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 26/03/2020, 13:06
 
Fecha de Ingreso: septiembre-2014
Ubicación: Argentina
Mensajes: 8
Antigüedad: 5 años, 6 meses
Puntos: 2
Respuesta: .htaccess - cuarto parametro

Compañeros, he solucionado el inconveniente descrito mas arriba utilizando la solucion que me ofrecia Triby.

En realidad, hubo 2 maneras posibles de hacerla.

La primera que se me ocurrio fue hacer un archivo .htaccess independiente y colocarlo en la carpeta public que era la que me interesaba acceder sin restricciones.
Ese .htaccess independiente toma el control solamente de lo que sucede en public. Lo que hice fue poner en lugar de RewriteEngine On poner RewriteEngine Off, de esa manera dentro de public no se aplicaban las RewriteRule que pudiera haber.

Pero no me gustaba la idea de tener 2 .htaccess dando vueltas por ahi, queria hacer todo desde uno solo, el que esta en el directorio raiz.
Por lo que finalmente me decante por utilizar

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

con la salvedad que esas RewriteCond las debo aplicar previamente a CADA regla RewriteRule y voila!

Finalmente el .htacess de mi directorio raiz me quedó de la forma:

Código HTML:
Ver original
  1. RewriteEngine On
  2.  
  3. #para que no se pueda acceder a los directorios
  4. Options -Indexes
  5.  
  6. #Solo controlador
  7. RewriteCond %{REQUEST_FILENAME} !-f
  8. RewriteCond %{REQUEST_FILENAME} !-d
  9. RewriteRule ^([a-zA-Z0-9_-]+)\/$ index.php?accion=$1 [S]
  10.  
  11. #2 parámetros
  12. RewriteCond %{REQUEST_FILENAME} !-f
  13. RewriteCond %{REQUEST_FILENAME} !-d
  14. RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/*$ index.php?accion=$1&ide=$2 [S]
  15.  
  16. #3 parámetros
  17. RewriteCond %{REQUEST_FILENAME} !-f
  18. RewriteCond %{REQUEST_FILENAME} !-d
  19. RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/.*$ index.php?accion=$1&ide=$2&ide2=$3 [L]

Muchisimas gracias a todos por vuestra ayuda ya que sin ella me hubiera sido imposible con esto. Doy por cerrado el tema. Saludos cordiales!

Última edición por internetdescartable; 26/03/2020 a las 13:22



La zona horaria es GMT -6. Ahora son las 09:20.