2011-07-05 13 views
11

Por ejemplo, si reescribo /category/topic/post/ en /index.php?cat=1&topic=2&post=3, ¿cómo puedo obtener /index.php?cat=1&topic=2&post=3 usando PHP?PHP: ¿Cómo puedo obtener la URL que ha sido reescrita con mod_rewrite?

+6

Respuesta corta: No se puede. Sin embargo, si su aplicación conoce el esquema de reescritura (es decir, tiene mapeo inverso) o tiene reglas de reescritura bien definidas, puede revertir el proceso de reescritura. –

+3

@Emre '$ _SERVER ['REQUEST_URI']' hará muy bien el trabajo en el servidor Apache y en IIS 7.x si se utiliza el módulo URL Rewrite v2. – LazyOne

+0

¿por qué quieres esta url? puede haber una solución más fácil para lograr lo que quiere lograr. – dqhendricks

Respuesta

12

Puede recrearlo con bastante facilidad. $_SERVER['PHP_SELF'] todavía le dará el nombre de archivo correcto para la secuencia de comandos. Esto debería hacer el truco:

$url = $_SERVER['PHP_SELF']; 
$parts = array(); 
foreach($_GET as $k=>$v) { 
    $parts[] = "$k=" . urlencode($v); 
} 

$url .= "?" . implode("&", $parts); 

$url ahora será la URL que estás buscando.

EDITAR: La respuesta de @ carpereret es mucho mejor. lo Upvote lugar

9

originales uri debe estar en $_SERVER['REQUEST_URI']

+0

Bueno. Además, esto le dará la URL completa que se muestra en la barra de direcciones del navegador en caso de que esté reescribiéndola. – LuBre

Cuestiones relacionadas