You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Paul Kuykendall <Pa...@argodata.com> on 2015/09/17 23:35:30 UTC

[users@httpd] Q: How to config for multi-MIME type of a given resource

Hi,

I need some help finding the relevant documentation and/or a solution for the following.

Problem:

I have an Apache httpd server that I want to use to serve a variety of different formats for the same resource URL.  Some of the resources are simple static files (OWL2 ontologies in this case serialized as both RDF/XML and Turtle).

Additionally I have a Tomcat service that I want to use to silently intercept  requests text/html and application/xhmtl versions of the resource.

I want the url rewrite/redirect/proxy to be invisible to the caller  (http://example.com/ontology.owl with an Accept: text/html should go to  http://example.com/parrot/parrot?documentUri=http://example.com/ontology.owl to generate the proper HTML documentation output but not change the URL as a  RewriteRule does, so that the user still thinks the URL is  http://example.com/ontology.owl

Use cases:

GET http://example.com/v1/ontology.owl (Accept: application/rdf+xml)
Returns the /v1/ontology.owl file found in the htdocs

GET http://example.com/v1/ontology.owl (Accept: text/turtle)
Returns the /v1/ontology.owl.ttl file found in the htdocs

GET http://example.com/v1/ontology.owl (Accept: text/html)
Returns the response from forwarding the request to a Tomcat webapp running at
http://example.com/parrot/parrot?documentUri=http://example.com/ontology.owl

Additionally, I would like the URL to remain http://example.com/v1/ontology.owl and  not get rewritten or redirected where the client sees the webapp service's URL.

I currently have the following rewrite rules in place that do most of what I want.

RewriteCond %{HTTP_ACCEPT} !application/rdf\+xml.*(text/html|application/xhtml\+xml)
RewriteCond %{HTTP_ACCEPT} text/html [OR]
RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml
RewriteRule ^/v1/ontology.owl$ http://example.com/parrot/parrot?documentUri=http://example.com/v1/ontology.owl [L]

RewriteCond %{HTTP_ACCEPT} application/rdf\+xml
RewriteRule ^/v1/ontology.owl$ /v1/ontology.owl [L]

# Rewrite rule to serve RDF/XML content from the vocabulary URI if requested
RewriteCond %{HTTP_ACCEPT} text/turtle
RewriteRule ^/v1/ontology.owl$ /v1/ontology.owl.ttl [L,R=303]

# Choose the default response
# ---------------------------
# Rewrite rule to serve the RDF/XML content from the vocabulary URI by default
RewriteRule ^/v1/ontology.owl$ /v1/ontology.owl [L]


How do I set up the config to handle the browser-friendly formats as described above?

Any help would be appreciated.  I've looked through the docs and searched the  net, but am at a loss on figuring this one out.

Thank you very much for reading through this massive wall of text.  I appreciate any help given.

/Paul
--------------------------------------------------- Confidentiality Notice: This electronic mail transmission is confidential, may be privileged and should be read or retained only by the intended recipient. If you have received this transmission in error, please immediately notify the sender and delete it from your system.