Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: Skeletron en 19 Mayo 2010, 05:57 AM

Título: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 19 Mayo 2010, 05:57 AM
Hola gente.
Les comento que estoy por hacer una web de noticias, y para mejorar un poco el SEO, quiero que las URL de las noticias, sean del tipo:
www.xxxxx.com/titulo_de_la_noticia

Me han dicho que tengo que modificar el archivo .htaccess
Pero nadie me dice que tengo que colocar..

Que tengo que colocar dentro de .htaccess?
Como "tomo" la cadena esa para buscar la noticia correspondiente luego?

Tambien pensaba:
Una vez que tenga ese texto, supongamos que es: "Windows XP SP3", tendré que mirar en la base de datos, cual noticia tiene ese titulo... Por ende, tendré que crear un indice en la base de datos, en un campo de texto variable de gran longitud... Me pesará MUCHISIMO el Indice... Pero, ¿no queda otra solucion? (tal vez acotar el indice)
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Nakp en 19 Mayo 2010, 06:36 AM
puedes hacerlo por 2 formas, mod_rewrite
http://forum.modrewrite.com/viewtopic.php?f=12&t=1447

o separando los parametros de la url
http://www.tutorio.com/tutorial/php-alternative-to-mod-rewrite-for-se-friendly-urls

en este ultimo tocan ambos temas
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 19 Mayo 2010, 07:59 AM
Veo que Blogger, usa el 2º item..

Porque los posteos son del tipo: www.xxx.com/año/mes/titulo

Será la mejor manera..
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Nakp en 19 Mayo 2010, 08:45 AM
si son asi, usan ambos, mod rewrite para pasarle todos los parametros a index.php y asi prescindir de el en la url o seria

url/index.php/param1/param2/param3
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 19 Mayo 2010, 09:35 AM
Mira vos..
Pero...
Supongamos que en mi web, quiero entrar a X noticia, de la sección Tecnologia... sería:
xxx.com/tecnologia/titulo

QUe pasa si el usuario escribe: xxx.com/index.php/tecnologia/titulo.
Ahí, utilizando la tecnica de explode(), habría un parametro que sería index.php.. o me equivoco?
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 19 Mayo 2010, 09:53 AM
Les comento que quiero implementar este sistema, principalmente por un tema SEO.
Me dijeron que Google "quiere" un poco mas a las URL con ese sistema. es así realmente?

Tambien facilita "la lectura" de la url... pero eso es mas secundario
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: N4X en 19 Mayo 2010, 13:11 PM
si, a los buscadores les gusta más el tipo web.com/sección/id-articulo

que no web.com/?sec=seccon&id=1

Pero creo recordar que a los 4-5 slashes te empieza a mirar feo...  :¬¬

igual con las concatenaciones de variables a las 6-7 también te mira feo xd
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Nakp en 19 Mayo 2010, 20:47 PM
Cita de: Skeletron en 19 Mayo 2010, 09:35 AM
Mira vos..
Pero...
Supongamos que en mi web, quiero entrar a X noticia, de la sección Tecnologia... sería:
xxx.com/tecnologia/titulo

QUe pasa si el usuario escribe: xxx.com/index.php/tecnologia/titulo.
Ahí, utilizando la tecnica de explode(), habría un parametro que sería index.php.. o me equivoco?

nope... todo lo que esta despues de index.php serian los "parametros" que le pasas a ese archivo, es necesario que indiques el archivo al que se los pasa, por eso se usa el mod_rewrite, para obviar escribir el archivo y enviar absolutamente todo como parametro a index.php... aunque necesistarias un par de condiciones, como:

Código (apache) [Seleccionar]
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 20 Mayo 2010, 02:58 AM
Otra pregunta:
Si el titulo de la noticia es: Bill Gates, ha muerto
el link, será: xxx.com/tecnologia/bill-gates-ha-muerto
Y como verán, no tendrá esa "," que está luego de GATES.
En todos lados es de esa manera.

Como puedo hacer eso?
La entrada en la base de datos, tendrá que ser del estilo:
LINK
TITULO
TEXTO
FUENTE
Y el link a mostrar, tendré que guardarlo en "LINK".. y será el INDEX...
O hay algun metodo mejor?
Porque no me imagino como hacen esas webs para mostrar "bill gates, ha muerto" de titulo, y en la url, las comas y signos extraños no estan.
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: N4X en 20 Mayo 2010, 11:42 AM
normalmente se remplazan los carácteres especiales por nada..

siendo , ? $ % & á à é è etc...
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: ^Tifa^ en 20 Mayo 2010, 19:23 PM
Me parece, que ya Skeletron tiene una solucion disponible mas beneficiosa que la que habia considerado  ;)  solo que ya no puedo exponerle mas sobre el tema, solo le di la sugerencia de que podia hacer y el la vio completamente valida y considero que era perfecta para lo que el esta buscando  :rolleyes:  espero que alguien que entienda y maneje los numeros mejor que yo  :xD  pueda autocompletar tus dudas muchacho, al menos ya vas encaminado.
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 29 Mayo 2010, 22:28 PM
Hay algo que no me quedó claro.
Si no quiero usar el mod_rewrite o como se llame. Necesito hacer "como una redireccion" para que no dé error 404.
Porque si programo todo con el explode, todo muy bonito, pero sigue dando el error 404. de pagina no encontrada.

Como soluciono eso?
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: marcofbb en 30 Mayo 2010, 00:47 AM
Busca sobre Url Amigables,

Ejmplo tenes el archivo llamado asdadssda.php
vos pones /asdadssda en tu navegador y agarra el asdadssda.php


Busca sobre Url Amigable o dejame que llege a mi casa y te paso el codigo
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 30 Mayo 2010, 00:59 AM
Posta, no entiendo nada.
Alguien me puede dar una mano?

Yo quiero hacer algo así:
xxx.com/variable1/variable2/variable3

Como hago para que eso no me de un error de "FILE NOT FOUND" o que no se encuentra el archivo y demas.
Y como puedo ver desde PHP el valor de esas variables
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: marcofbb en 30 Mayo 2010, 02:49 AM
Bueno mira ahi te lo paso

Código (html4strict) [Seleccionar]

RewriteEngine On

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

RewriteRule categoria/(.*)/(.*).html $1.php



ahi tenes un ejemplo

y los links de tu web pones asi

categoria/idde la web/loquequieras.html

por ejemplo

www.tuweb.com/categoria/el id de la web/el titulo.html

Calculale que el id de la web es p2.php y se trata sobre Como crear una web

tonses el  link kedaria

www.tuweb.com/categoria/p2/Como-crear-una-web.html
www.tuweb.com/categoria/p2/Crear-web.html

O como quieras que el buscador "Google" lo reconozca

www.tuweb.com/categoria/p2/mira-esta-pagina-google-xd.html


Saludo cualquier cosa segi posteando en el hilo

Mira te doy un ejemplo con tu web

crea un archivo llamado ".htaccess"

ponele dentro esto:

Código (html4strict) [Seleccionar]

RewriteEngine On

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

RewriteRule categoria/(.*)/(.*).html $1.html


y entra haci a tu web

http://www.brodasoft.com.ar/Sobre-Mi/Datos-sobre-Mi.html

entonces entra a lo que queres y si a Sobre-Mi.html le cambias el nombre a 1.html quedaria haci

http://www.brodasoft.com.ar/1/Datos-sobre-Mi.html

Si queres agregar categoria pones este codigo en el ".htaccess"

Código (html4strict) [Seleccionar]

RewriteEngine On

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

RewriteRule categoria/(.*)/(.*).html $2.html


http://www.brodasoft.com.ar/aca-categoria/Sobre-Mi.html

ej:

http://www.brodasoft.com.ar/Nosotros/Sobre-Mi.html
http://www.brodasoft.com.ar/About/Sobre-Mi.html


No se expresarme bien cualquier cosa pregunta algo directo y lo respondo
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 30 Mayo 2010, 03:38 AM
Gracias por el ejemplo, pero no estoy buscando hacer algo con archivos, como lo estas haciendo vos.
Lo que yo quiero hacer, es con variables. Para tomar los datos de la URL, para bsucar dentro de la base de datos.
Por ejemplo:

www.brodasoft.com.ar/usuarios/12/edad

Quiero que "usuarios" quede guardado en una variable, al igual que 12, y edad
algo así:
$var1=usuarios
$var2=12
$var3=edad

Luego, muestro con PHP la EDAD del USUARIO con ID=12

:)

Pero creo estar entendiendo un poquito la sentecia que va dentro del .hachashhcahschsssss
Pero, si me podes ir dando una mano, mejor.
Yo apenas logre algo, te digo


AGREGO:
AHH.. y me parece que tenes un error en una lina:
RewriteRule ^(.*)/(.*)$ $1.php

Te faltaba el ^ y el $
O no?


AGREGO:
Creo que lo que yo quiero hacer, es ésto:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Rewriterule ^(.*)/(.*)/(.*)$ index.php?x=$1&y=$2&z=$3

O me equivoco?

Yo trabajo SOLAMENTE con el INDEX.php
Los demas archivos los "include" en el index.
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Nakp en 30 Mayo 2010, 04:01 AM
Cita de: Skeletron en 29 Mayo 2010, 22:28 PM
Hay algo que no me quedó claro.
Si no quiero usar el mod_rewrite o como se llame. Necesito hacer "como una redireccion" para que no dé error 404.
Porque si programo todo con el explode, todo muy bonito, pero sigue dando el error 404. de pagina no encontrada.

Como soluciono eso?

dominio.com/index.php/categorias/demas/parametros

los parametros no le llegan a index.php por magia :P
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: marcofbb en 30 Mayo 2010, 04:10 AM
Yo la forma que te di esta bien, vos la tenes q modificar para tu agrado,  ej: para variable le mandas en el .htaacsss el index.php por variable.php?var=$1


lee esto
http://www.maestrosdelweb.com/editorial/urlamigable/
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 30 Mayo 2010, 04:16 AM
Acabo de hacerlo funcionar.
El problema está en que hay que configurar para cada cantidad diferentes de variables que lleguen.

Mi .hactcss, quedó asi:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteBase /
Rewriterule ^(.*)$ index.php?x=$1
Rewriterule ^(.*)/(.*)$ index.php?x=$1&y=$2
Rewriterule ^(.*)/(.*)/(.*)$ index.php?x=$1&y=$2&z=$3

Fijense las ultimas 3 lineas, como describo para cuando hay 1, 2 y 3 parametros...
Eso me estaba dando error... Porque yo colocaba solamente para 3 parametros, y probaba con 1.


:)


Gracias gente!!! Muchas Gracias!
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 30 Mayo 2010, 04:38 AM
*****, aun queda un problea mas.

Si entro a .com/parametro1/parametro2

Y muestro los valores, todo funciona correctamente.
Pero las imagenes en la web, intentan abrir desde .com/parametro1/image.jpg
En imagenes del estilo:
<img src="logo.png" />

Pero si coloco:
<img src="/logo.png" />
Funciona correctamente.

Esa es la solucion correcta?
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Nakp en 30 Mayo 2010, 04:56 AM
si.. aunque lo ideal es hacer algo como $SITE_URL."imagen.jpg" para la ruta
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 30 Mayo 2010, 05:18 AM
Increible.. Pero me surgió otro problema.

Como ya les dije, es así como tengo el .nombreraro:
Rewriterule ^(.*)$ index.php?x=$1
Rewriterule ^(.*)/(.*)$ index.php?x=$1&y=$2
Rewriterule ^(.*)/(.*)/(.*)$ index.php?x=$1&y=$2&z=$3

En el index. muestro ell valor de la variable X, Y y Z.
Pero miren los resultados de las diferentes pruebas:

http://localhost:8084/favio
X: favio
Y:
Z:

http://localhost:8084/favio/
X: index.php
Y:
Z:

http://localhost:8084/favio/noel
X: index.php
Y: noel
Z:

http://localhost:8084/favio/noel/
X: index.php
Y: noel
Z:

http://localhost:8084/favio/noel/broda
X: index.php
Y: noel
Z: broda

http://localhost:8084/favio/noel/broda/
X: index.php/noel
Y: broda
Z:


(desde aca en adelante, funciona con normalidad... pero porque le agrego el index.php... si coloco en x a $2 en vez de $1, y así sucesivamente con Y y Z, funcionará perfectamente...)
http://localhost:8084/index.php/favio
X: index.php
Y: favio
Z:

http://localhost:8084/index.php/favio/
X: index.php
Y: favio
Z:

http://localhost:8084/index.php/favio/noel
X: index.php
Y: favio
Z: noel
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 31 Mayo 2010, 02:57 AM
Ahhh.. amigos.. si no me dan una mano con ésta.. me corto las bolas..

Han visto el comportamiento?
Como si, al colocar el 2º parametro, el 1º se pierde y se reemplaza por index.php
Pero funciona correctamente si escribo index.php en la url
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: MinusFour en 31 Mayo 2010, 03:03 AM
Hmm, prueba hacerlo alrevez.


Rewriterule ^(.*)/(.*)/(.*)$ index.php?x=$1&y=$2&z=$3
Rewriterule ^(.*)/(.*)$ index.php?x=$1&y=$2
Rewriterule ^(.*)$ index.php?x=$1


Creo que lo que pasa es que la expresion ^(.*)$ incluye a ^(.*)/(.*)/(.*)$. No se mucho de REGEX...
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 31 Mayo 2010, 05:01 AM
Ahora que lo dices, es verdad. ese podria ser el error.. pero lo he probado al revez.. y no funciona para nada
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 31 Mayo 2010, 05:14 AM
de las 2 maneras, no me funciona..
Aca dejo como estoy implementando todo:


.htaccess:
RewriteEngine on

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

Rewriterule ^(.*)$ index.php?x=$1
Rewriterule ^(.*)/(.*)$ index.php?x=$1&y=$2
Rewriterule ^(.*)/(.*)/(.*)$ index.php?x=$1&y=$2&z=$3
Rewriterule ^(.*)/(.*)/(.*)/(.*)$ index.php?x=$1&y=$2&z=$3&zz=$4

Y a las variables, las tomo en el index.php así:
echo 'X: '.$_GET['x'].'<br>';
echo 'Y: '.$_GET['y'].'<br>';
echo 'Z: '.$_GET['z'].'<br>';
Así muestro el valor de cada variable..

Gracias por ayudarme hasta el momento.
Y espero me sigan ayudando.. que tengo todo el proyecto parado por culpa de esta *****
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 2 Junio 2010, 09:31 AM
Disculpen que siga jodiendo..
Es increible.. No puedo U.U

Alguien me da una mano?
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 2 Junio 2010, 11:06 AM
GENTE!!!!!!!!........
Encontre el error.
Pero necesito una mano para solucionarlo.

El tema, es el siguiente:
Las reglas, deben estar colocadas como dijo MF anteriormente.
Tambien hay que agregar [L] (mas un espacio luego del ultimo corchete), para que se comporte como un "elsefi".. o sea que, cuando encuentra una regla que se cumple, deja de comprobar las demas.
Pero miren, aca hay un problema:

Rewriterule ^(.*)/(.*)/(.*)/(.*)$ index.php?x=$1&y=$2&z=$3&zz=$4 [L]  <<<PERFECTA PARA 4 PARAMETROS
Rewriterule ^(.*)/(.*)/(.*)$ index.php?x=$1&y=$2&z=$3 [L]   <<<PERFECTA PARA 3 PARAMETROS
Rewriterule ^(.*)/(.*)/$ index.php?x=$1&y=$2asd [L]   <<<PERFECTA PARA 2 PARAMETROS
Rewriterule ^(.*)$ index.php?x=$1 [L]   <<<¡¡¡PROBLEMA!!!
Porque el problema? es facil, porque el REGEX; (.*), implica "CUALQUIER COSA", entonces, tambien involucra para los 4 parametros, 3, 2 y 1... y 1232345123, y lo que sea...

Si yo borro esta ultima regla, TODO FUNCIONA PERFECTAMENTE, obviamente, menos las URL que tiene 1 solo parametro.
Entonces, el problema esta en como lograr hacer que ande con 1 solo parametro???

Pense en agregarle una barra al final a la ultima regla.. algo asÍ.
Rewriterule ^(.*)/(.*)/(.*)/(.*)$ index.php?x=$1&y=$2&z=$3&zz=$4 [L]
Rewriterule ^(.*)/(.*)/(.*)$ index.php?x=$1&y=$2&z=$3 [L]
Rewriterule ^(.*)/(.*)$ index.php?x=$1&y=$2 [L]
Rewriterule ^(.*)/$ index.php?x=$1 [L]

Pero, es lo mismo que la anterior.. ya que considera que es de 2 parametros, con el 2º "null"..

CLaro, todas las web que dan ejemplos, como:
http://www.maestrosdelweb.com/editorial/urlamigable/
Hablan de que todo funciona perfectamente, pero con las URL con una "/" al final.... Y queda mal... porque no podria tener url del tipo:
.com/noel
tendría que ser:
.com/noel/

:D

Me da una ultima mano con ésto? :D
Título: Re: Como configuro para utilizar las url xxxx.com/xxxx ??
Publicado por: Skeletron en 2 Junio 2010, 11:23 AM
DIOSSSSSSSSSSS!!!!!!!!!!!!!
FUNCIONÓ!

Lo logre...

Options +FollowSymLinks
RewriteEngine on

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

Rewriterule ^(.*)/(.*)/(.*)/(.*)$ index.php?x=$1&y=$2&z=$3&zz=$4 [L]
Rewriterule ^(.*)/(.*)/(.*)$ index.php?x=$1&y=$2&z=$3 [L]
Rewriterule ^(.*)/(.*)$ index.php?x=$1&y=$2 [L]
Rewriterule ^([a-zA-Z0-9]+)$ index.php?x=$1 [L]

Así es como quedó mi querido .htaccess.
Noten que con la 1º regla, puedo analizar 4 parametros, la 2º regla: 3 parametros, la 3º regla,: 2 parametros, y la 4º (ultima), lo que analizo, es que haya almenos 1 numero o letra luego de la barra del .com (eso lo aclara el rewritebase /), pero sin la existencia de una "/" al final, por lo que ignoraría a un segundo parametro, y funcionaría solamente para 1 parametro.

Estoy seguro que luego de terminar con ésto, y especificar mas correctamente cada una de las reglas (ya que faltan otras intermedias, para que no se creen variables al pedo.. por si algun tonto agrega una barra al final del ultimo parametro, y se crea otro parametro nulo mas, pero que con el ISSET de PHP, sataría como que existe el otro parametro, cuando en realidad no..

Ya haré a glun tuorial, y lo subo al Wiki del foro... Ya tengo que hacer 2 tutoriales :D


Las amo nenas (?)