url con tres parametros htaccess

Iniciado por OssoH, 6 Noviembre 2014, 23:20 PM

0 Miembros y 1 Visitante están viendo este tema.

OssoH

Tengo una url que le puedo pasar como máximo tres parámetros indistintamente en un orden diferente. No siempre tengo que pasarle tres parametros, le puedo pasar 1, 2, o los tres 3.
Es decir por ejemplo
/?page=category&x=geografi&action=succes
/?action=succes
/?x=geografi&page=category&action=succes

Había pensado en tener una url amigable de la siguiente forma
/category/geografi/succes
pero esto no es posible porque el orden lo puedo poner distinto. Por lo tanto pienso que la url amigable deberia ser :
Por ejemplo /?page=category&x=geografia&action=succes
convertido sería  => /page/category/x/geografia/action/succes

Mi pregunta es...¿Que reglas serían en el htaccess?

Yo luego en el PHP recuperaria las variables de la url :
$_GET['page']
$_GET['x'];
$_GET['action']

Acepto sugerencias si me planteamiento no es el correcto.
Muchas gracias.



OssoH

Tengo claro que si eligiese como url amigable la siguiente  /category/geografi/succes

el htaccess seria


RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ index.php?page=$1&x=$2&action=$3 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ index.php?page=$1&x=$2 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?page=$1 [L]


Pero como en mi url puede variar de posición los parámetros, por eso plantee otro tipo de url.



MinusFour

Cita de: OssoH en  6 Noviembre 2014, 23:24 PM
Tengo claro que si eligiese como url amigable la siguiente  /category/geografi/succes

el htaccess seria


RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ index.php?page=$1&x=$2&action=$3 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ index.php?page=$1&x=$2 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?page=$1 [L]


Pero como en mi url puede variar de posición los parámetros, por eso plantee otro tipo de url.


Pues así sería cuestion de agregar las palabras page, x, action

Código (Apache) [Seleccionar]

RewriteEngine On
RewriteBase /
RewriteRule ^/page/([a-zA-Z0-9_-]+)/x/([a-zA-Z0-9_-]+)/action/([a-zA-Z0-9_-]+)/?$ index.php?page=$1&x=$2&action=$3 [L]
RewriteRule ^/page/([a-zA-Z0-9_-]+)/action/([a-zA-Z0-9_-]+)/x/([a-zA-Z0-9_-]+)/?$ index.php?page=$1&x=$3&action=$2 [L]
RewriteRule ^/action/([a-zA-Z0-9_-]+)/page/([a-zA-Z0-9_-]+)/x/([a-zA-Z0-9_-]+)/?$ index.php?page=$2&x=$3&action=$1 [L]
RewriteRule ^/x/([a-zA-Z0-9_-]+)/page/([a-zA-Z0-9_-]+)/action/([a-zA-Z0-9_-]+)/?$ index.php?page=$2&x=$1&action=$3 [L]
RewriteRule ^/x/([a-zA-Z0-9_-]+)/action/([a-zA-Z0-9_-]+)/page/([a-zA-Z0-9_-]+)/?$ index.php?page=$3&x=$1&action=$2 [L]
RewriteRule ^/action/([a-zA-Z0-9_-]+)/x/([a-zA-Z0-9_-]+)/page/([a-zA-Z0-9_-]+)/?$ index.php?page=$3&x=$2&action=$1 [L]
RewriteRule ^/page/([a-zA-Z0-9_-]+)/x/([a-zA-Z0-9_-]+)/?$ index.php?page=$1&x=$2 [L]
RewriteRule ^/x/([a-zA-Z0-9_-]+)/page/([a-zA-Z0-9_-]+)/?$ index.php?page=$2&x=$1 [L]
RewriteRule ^/page/([a-zA-Z0-9_-]+)/?$ index.php?page=$1 [L]


Y establecer cual es el orden.

OssoH

Vaya...que fácil se vé cuando está hecho.
No se me había ocurrido esa forma. Salen muchas líneas en el htaccess pero queda más legible.

Gracias