On 10/21/13 4:52 PM, Daniel Kinzler wrote:
Am 21.10.2013 16:48, schrieb Kingsley Idehen:
Can someone not change 302 to 303 re: RewriteRule ^/entity/(.*)$
https://www.wikidata.org/wiki/Special:EntityData/$1 [R=302,QSA] ?

The thing is that we intended this to be an internal apache rewrite, not a HTTP
redirect at all. Because Special:EntityData itself implements the content
negotiation that triggers a 303 when appropriate.

So, currently we get a 302 from /entity/Q$1 to /wiki/Special:EntityData/$1 (the
generic document URI), which then applies content negotiation and sends a 303
pointing to e.g. /wiki/Special:EntityData/$1.ttl (the URL of a specific
serialization, e.g. in turtle).

What I want is to remove the initial 302 completely using an internal rewrite,
not replace it with another 303 - since I don't think that's semantically
correct. This did not work when tried, for reasons unknown to me. Someone
suggester that the wrong options where set for the rewrite rule, who knows.

Kingsley, do you think having two 303s (from /entity/Q$1 to
/wiki/Special:EntityData/$1 and another one to wiki/Special:EntityData/$1.xxx)
would be appropriate or at least better than what we have now?

Yes.

303 is what you want. Also note that 303's can now be cached re. newer HTTP spec guidelines. Thus, this is your simplest fix.

Now, if you are concerned about the 303 traffic, you can use a different pattern (again based on newer HTTP spec guidelines) where your server returns a 200 OK on the entity URI and then returns the actual description document URL in the "Location:" response header, as exemplified below:

curl -I http://dbpedia.org/resource/Linked_Data
HTTP/1.1 303 See Other
Date: Mon, 21 Oct 2013 21:34:42 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 0
Connection: keep-alive
Server: Virtuoso/07.00.3204 (Linux) i686-generic-linux-glibc212-64  VDB
Accept-Ranges: bytes
Location: http://dbpedia.org/page/Linked_Data

and

curl -I http://dbpedia.org/resource/Linked_Data
HTTP/1.1 200 OK
Date: Mon, 21 Oct 2013 21:34:42 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 0
Connection: keep-alive
Server: Virtuoso/07.00.3204 (Linux) i686-generic-linux-glibc212-64  VDB
Accept-Ranges: bytes
Location: http://dbpedia.org/page/Linked_Data

Meanings: the client requested a document denoted <http://dbpedia.org/resource/Linked_Data> and the server confirms that there is a document associated with said URI (albeit not in a direct denotation oriented relationship) via 200 OK, and then returns the actual document location via "Location:" header.


The only problem with this last solution is that its new and I doubt most existing Linked Data clients support the pattern.


Kingsley

-- daniel

_______________________________________________
Wikidata-l mailing list
Wikidata-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikidata-l


-- 

Regards,

Kingsley Idehen	      
Founder & CEO 
OpenLink Software     
Company Web: http://www.openlinksw.com
Personal Weblog: http://www.openlinksw.com/blog/~kidehen
Twitter/Identi.ca handle: @kidehen
Google+ Profile: https://plus.google.com/112399767740508618350/about
LinkedIn Profile: http://www.linkedin.com/in/kidehen