Yeahhhhhh lo solucionedesde php!!
Explico la resolución, gracias a todos por la ayuda!
El problema: la url que queria hacer andar era
test-bla-bla-4>3-y-3<6 y el htaccess estaba esto:
Código Apache:
Ver originalOptions +FollowSymLinks
RewriteEngine on
RewriteRule ^test-(.*)$ index.php?token=$1
pero si accedia por esa url de forma directa o por su
urlencode (
test-bla-bla-4%3E3-y-3%3C6) obtenia un 403, esto se debe a son caracteres protegidos como menciona
@lolainas no pueden aparecer en la url.
El secreto: Los caracteres escapados, son decodificados 2 veces no 1 como se piensa de forma intuitiva, la primera vez, es el mod_rewrite quien escapa los caracteres, y la segunda es php cuando arma el array de $_GET.
La solucion: Encodear dos veces de forma recursiva, de esta forma se puede pasar a cualquier carácter, ya que el segundo encode, no deja rastros del primero.
Código PHP:
Ver original<?php
$foo = 'bla-bla-4>2-y-3<6';
?>
<a href="test-<?=$foo_encoded;?>">test-<?=$foo_encoded;?></a>
Accediendo por
index.php Cita: array (size=0)
empty
test-bla-bla-4%253E2-y-3%253C6
Accediendo por
test-bla-bla-4%253E2-y-3%253C6 Cita: array (size=1)
'token' => string 'bla-bla-4>2-y-3<6' (length=17)
test-bla-bla-4%253E2-y-3%253C6
con lo cual el problema esta solucionado, muchas gracias.
saludos.
Edito:
Como nota off-topic, es posible hacer esto mismo desde javascript
:
Código Javascript
:
Ver originalvar foo = 'test-bla-bla-4>2-y-3<6';
location.href = encodeURIComponent(encodeURIComponent(foo));