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?
11
A
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
- 1. Cómo agregar variables de URL adicionales a una URL ya reescrita con mod_rewrite
- 2. ¿Cómo puedo "desarmar" una clase que ha sido declarada
- 3. URL mod_rewrite
- 4. Cómo obtener la URL anterior con PHP
- 5. ¿Cómo puedo obtener mod_rewrite para que coincida con una regla de una sola vez
- 6. Deshacer una fusión que ha sido presionada
- 7. ¿Puedo detectar que un método ha sido anulado?
- 8. ¿Cómo puedo depurar las reglas de mod_rewrite?
- 9. mod_rewrite añade la extensión .php
- 10. Eliminando la extensión .php con mod_rewrite
- 11. ¿Cómo saber si la cadena ya ha sido codificada en la URL?
- 12. ¿Cómo puedo verificar si una estructura ha sido instanciada?
- 13. Reescritura de URL de IIS7: ¿Cómo no eliminar el protocolo HTTPS de la URL reescrita?
- 14. ¿Cómo puedo determinar si una imagen ha sido retocada?
- 15. URL insensibles a mayúsculas/minúsculas con mod_rewrite
- 16. ¿Cómo saber qué objeto ha sido eliminado?
- 17. ¿Cómo puedo detectar si una extensión de Chrome ha sido habilitada (después de haber sido deshabilitada)
- 18. ¿Cómo detecta git que un archivo ha sido modificado?
- 19. ¿Cómo confirmar que el correo ha sido entregado o no?
- 20. ¿Cómo puedo enviar un mensaje a un dispositivo usando C2DM desde un servidor que ha sido autenticado con OAuth2?
- 21. ¿Cómo puedo ejecutar el código java que ha sido pegado en mi programa?
- 22. ¿Cómo puedo obtener lo que mi función principal ha devuelto?
- 23. Apaches mod_rewrite VS. Enrutamiento PHP?
- 24. ¿Cómo puedo obtener todo el texto de un tweet que ha sido retuiteado y se extiende 140 caracteres?
- 25. ¿Cómo eliminar siempre WWW de una url con mod_rewrite?
- 26. ¿Puedo confiar en mod_rewrite?
- 27. va_list no ha sido declarado
- 28. cómo determinar si la página web ha sido modificada
- 29. Cómo hacer una redirección mod_rewrite a la URL relativa
- 30. puntero a una estructura que no ha sido declarada
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. –
@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
¿por qué quieres esta url? puede haber una solución más fácil para lograr lo que quiere lograr. – dqhendricks