elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Url amigables
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Url amigables  (Leído 2,036 veces)
idenergia

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Url amigables
« en: 10 Agosto 2016, 14:04 pm »

Hola,
Quisiera mejorar la estructura de mis url.

Tengo una web estática y le he dado forma a las url para que no acabasen en .php
Gracias a htacces las reescribo con esta instrucción

RewriteEngine On
RewriteCond %{HTTP_HOST} ^idenergia.com [NC]
RewriteRule ^(.*)$ http://www.idenergia.com/$1 [L,R=301]

Así por ejemplo productos.php es /productos
Ahora me gustaria poder crear una estructura mejor añadiendo un subdirectorio previo para crear una arquitectura:

/productos
/productos/placas-solares-termicas
/productos/placas-solares-fotovoltaicas

El problema es que cuando en el menu pongo que el enlace sea /productos/placas-solares-termicas me lleva a un 404. :rolleyes:

¿Cómo puedo hacerlo?

gracias



En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: Url amigables
« Respuesta #1 en: 14 Agosto 2016, 18:11 pm »

Para ello debes implementar url routing con php. Pero hay un pequeño problema, ya no podrás usar el indexamiento de apache, osea navegar por las carpetas (por ejemplo website.com/css/sytles.css), por lo que tendrás que crearte un subdominio para servir el contenido estático. Lo bueno es que es más seguro.

Yo lo tengo de la siguiente manera:

página principal y si tienes subdominios que requieran esto también:

Código
  1. <IfModule dir_module>
  2.    DirectoryIndex index.php
  3. </IfModule>
  4.  
  5. <IfModule mod_rewrite.c>
  6.    RewriteEngine On
  7.    RewriteBase /
  8.    RewriteCond %{REQUEST_FILENAME} !-d
  9.    RewriteCond %{REQUEST_FILENAME} !-f
  10.    RewriteRule ^index\.php$ - [L]
  11.    RewriteRule . index.php [L]
  12. </IfModule>

Y para el subdominio estático (yo lo llamo static.website.com):

Código
  1. <Files *>
  2.    SetHandler default-handler
  3. </Files>
  4.  
  5. <IfModule dir_module>
  6.    DirectoryIndex index.html
  7. </IfModule>
  8.  
  9. <IfModule mod_headers.c>
  10.    SetEnvIfNoCase Origin: "https?://(www\.)?(website\.com|subdominio\.website\.com )(:\d+)?$" ACAO=$0
  11.    Header set Access-Control-Allow-Origin: "%{ACAO}e" env=ACAO
  12.    Header set Access-Control-Allow-Methods: "GET"
  13. </IfModule>

Lo primero es sencillo de entender, lo que hace es redirigir todas las peticiones al index.php, que ahora es el router (en lugar de apache, por eso ya no funcionará website.com/css/styles.css).

Lo segundo lo que hace es: primero desactiva php (no se necesita) y activa CORS para que se puedan hacer peticiones get para cargar los archivos estáticos (ya sean imagenes, javascript, css, etc...). Donde dice website lo cambias por el nombre de tu web y donde dice subdominio por el nombre de tu subdominio.

Esa era la configuración de Apache, ahora viene la parte de programación PHP. Esto ya lo he explicado anteriormente, te dejo un enlace: http://foro.elhacker.net/php/incluir_metadatos_de_forma_dinamica-t454368.0.html;msg2077138#msg2077138 Aquí explico en detalle como hacerlo, cualquier cosa que no entiendas no dudes en preguntarlo, eso sí, ordenadas una por una las dudas y no todas juntas ;D


En línea

zonahurbana

Desconectado Desconectado

Mensajes: 178

RS, JC.


Ver Perfil WWW
Re: Url amigables
« Respuesta #2 en: 15 Agosto 2016, 19:21 pm »

Hola.

gAb1, qué framework usas?

Cuando inicie con PHP quería hacer esta configuración de las URLs pero me parecía un tanto complicado (de hecho aun me parece complicado, creo que podría llegar a entenderlo pero tendría que revisarlo con mucha calma jeje).

Buscando información me encontré con sugerencias sobre usar un framework, y así fue como terminé usando Laravel. Como ya trae un sistema para manejar rutas, solo debo declararlas.

Entonces por curiosidad quería saber qué framework usas. Ya que si manejas el tema de rutas a este nivel, el framework ha de ser a más bajo nivel, o bien ser más complejo pero centrado en otro temas ;-)

Cada vez existen más bibliotecas, frameworks, que simplifican las cosas, pero da cierto "miedo" pensar que solo uso características sin saber qué es lo que ocurre por dentro.
De hecho, siendo este año 2016, aun no sé cómo está conformada una calculadora por dentro, o más bien dicho, cómo la hicieron (¿todo a nivel de circuitos o programaron algo que luego "exportaron" a un circuito fijo?).

Saludos.
En línea

Nunca dejar de aprender es importante, más allá del ritmo que se siga ...
gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: Url amigables
« Respuesta #3 en: 15 Agosto 2016, 20:25 pm »

Pues yo tampoco tengo ni idea de como funciona una calculadora por dentro  ;D Hice (en su dia) calculadoras en C, alomejor así es como funcionan, un script, ni idea.

Uso mi propio framework, empecé a programar por mi cuenta y me gusta conocer el código que uso en mis aplicaciones. Para eso no hay nada mejor que hacerlo todo tu mismo. ¿Reinventar la rueda? Sip (o no, como se mire  :laugh:), pero no me importa, así voy aprendiendo cada vez más y más y haciendo mi código más seguro.

Sé lo que significa "bajo nivel" en lo referente a lenguajes de programación y su relación con el hardware, pero PHP es un lenguage de nivel alto y no tiene comunicacion alguna con el hardware, ¿a que te refieres entonces?

Aunque creo que te refieres a lo ultimo que has comentado, código que no conoces ejecutandose... Y para leerme el framework entero prefiero mantenerme informado sobre seguridad y aplicarla yo mismo a mi propio código.
En línea

zonahurbana

Desconectado Desconectado

Mensajes: 178

RS, JC.


Ver Perfil WWW
Re: Url amigables
« Respuesta #4 en: 15 Agosto 2016, 20:55 pm »

Aunque creo que te refieres a lo ultimo que has comentado, código que no conoces ejecutandose... [...]
Sí, justo a eso me refería.

Cuando puedo imaginarme cómo funciona algo, es decir, tengo idea de cómo puede estar escrito, acepto usarlo.
Aunque, hay cosas que no puedo imaginar cómo funcionan. En esos casos sí comienzo a indagar un poco por cómo están por dentro.

Por ejemplo, aun no comprendo bien el concepto de Websockets (y ese vacío es muy incómodo).
He implementado un chat en tiempo real usando Laravel y Pusher, pero no tengo idea de cómo funciona Pusher internamente. Creo que podría seguir algún tutorial de Node para implementar ese servicio por mi cuenta, pero no lo hice aun, y tampoco sé por qué no mencionan a PHP para estos casos (asumo que debe ser menos eficiente, más que ser algo imposible).

Bueno, gracias. Perdón idenergia por distorsioar el tema del post ;D
En línea

Nunca dejar de aprender es importante, más allá del ritmo que se siga ...
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
URL amigables en prestashop
Desarrollo Web
snknet 1 4,622 Último mensaje 16 Noviembre 2010, 18:07 pm
por el-brujo
URLs Amigables a profundidad ? (solved)
PHP
Diabliyo 4 8,085 Último mensaje 8 Febrero 2011, 00:04 am
por Diabliyo
Duda con las rutas amigables de mi web
Desarrollo Web
Hekaly 4 2,462 Último mensaje 15 Noviembre 2012, 15:20 pm
por Hekaly
problema urls amigables...
PHP
Rk_PetIT 0 1,460 Último mensaje 2 Agosto 2013, 00:35 am
por Rk_PetIT
Problema con url amigables
Desarrollo Web
carwar 2 2,111 Último mensaje 16 Septiembre 2017, 02:19 am
por carwar
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines