master
Joey Hess 2010-09-18 12:58:37 -04:00
parent 0b59b14007
commit 96a8ea0ebb
1 changed files with 28 additions and 0 deletions

View File

@ -0,0 +1,28 @@
The apache config documented in [[plugins/po]] has a subtle bug. It works
until a site gets an index.atom or index.rss file. (Acutally, with po
enabled, they're called index.en.atom or index.en.rss etc, but the result
is the same).
Then, when wget, curl, or w3m is pointed at http://site/, apache serves
up the rss/atom file rather than the index page.
Analysis:
* /etc/mime.types gives mime types to .rss and .atom files
* `mod_negotiation`'s MultiViews allows any file with a mime type to be
served up via content negotiation, if the client requests that type.
* wget etc send "Accept: */*" to accept all content types. Compare
with firefox, which sends "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*"
* So apache has a tie between a html encoded Enlish file, and a rss encoded
English file and the client has no preference. In a tie, apache will serve up the
*smallest* file, which tends to be the rss file. (Apache's docs say it uses that
strange criteria to break ties; see <http://httpd.apache.org/docs/2.0/mod/mod_mime.html#multiviewsmatch>)
The only way I have found to work around this problem is to remove
atom and rss from /etc/mime.types. Of course, that has other undesirable
results.
I wonder if it would be worth making the po plugin generate apache
[type map files](http://httpd.apache.org/docs/2.0/mod/mod_negotiation.html#typemaps).
That should avoid this problem.
--[[Joey]]