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?