Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/07/2009, 16:38
Avatar de bng5
bng5
 
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 15 años, 10 meses
Puntos: 24
Negociación con archivo .var

Normalmente uso MultiViews basado en nombres de archivos, delegándole la negociación a Apache.
Por ejemplo, para negociar idioma uso:
archivo.es.xml
archivo.en.xml
archivo.xml

Para negociar tipo:
imagen.png
imagen.gif

Mi problema es que llegué a un ponto en el que voy a necesitar usar archivos .var para especificar la negociación, pero este sólo funciona si apunto el navegador al archivo var.

Por ejemplo: tengo un mapa llamado asd.var
Código:
URI: asd

URI: asd1.php
Content-type: application/json; qs=0.8

URI: asd2.php
Content-type: application/xml; qs=0.5

URI: asd3.php
Content-type: text/html; qs=0.3

URI: asd4.php
Content-type: application/xhtml+xml; qs=0.1
Cuando voy al recurso /asd con la cabecera Accept: application/json me retorna un HTTP Status 404. Pero si funciona cuando voy a /asd.var. Lo cual realmente no tiene sentido porque MultiViews está activo (lo pruebo ingresando /asd2 y me retorna el archivo asd2.php).

También intenté cambiando los nombres de los archivos a:
Código:
URI: asd

URI: asd.json.php
Content-type: application/json; qs=0.8

URI: asd.xml.php
Content-type: application/xml; qs=0.5

URI: asd.html.php
Content-type: text/html; qs=0.3

URI: asd.xhtml.php
Content-type: application/xhtml+xml; qs=0.1
Cuando voy a /asd el servidor no puede negociar porque para él son todos application/x-httpd-php.
Alternates: {"asd.html.php" 1 {type application/x-httpd-php} {length 341}}, {"asd.json.php" 1 {type application/x-httpd-php} {length 341}}, {"asd.xhtml.php" 1 {type application/x-httpd-php} {length 341}}, {"asd.xml.php" 1 {type application/x-httpd-php} {length 341}}

Pero cuando voy a /asd.var me devuelve el correcto.

Como última prueba apunto a /asd.var con una cabecera Accept erronea y hasta me indica los tipos mime indicados en el mapa.
Alternates: {"asd.json.php" 0.8 {type application/json} {length 341}}, {"asd.xml.php" 0.5 {type application/xml} {length 341}}, {"asd.html.php" 0.3 {type text/html} {length 341}}, {"asd.xhtml.php" 0.1 {type application/xhtml+xml} {length 341}}

¿Alguien tiene una sugerencia para que el archivo var sea el que resuelva la respuesta sin tener que ingresar en la consulta .var?