Como configuro para utilizar las url xxxx.com/xxxx ??

Iniciado por Skeletron, 19 Mayo 2010, 05:57 AM

0 Miembros y 2 Visitantes están viendo este tema.

Nakp

si.. aunque lo ideal es hacer algo como $SITE_URL."imagen.jpg" para la ruta
Ojo por ojo, y el mundo acabará ciego.

Skeletron

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

Skeletron

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

MinusFour

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...

Skeletron

Ahora que lo dices, es verdad. ese podria ser el error.. pero lo he probado al revez.. y no funciona para nada

Skeletron

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 *****

Skeletron

Disculpen que siga jodiendo..
Es increible.. No puedo U.U

Alguien me da una mano?

Skeletron

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

Skeletron

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 (?)