An interesting bug came up in the OWN Forums over the weekend, when downloading Office 2007 Word (docx) document from an Apache hosted site, the file either comes up garbled (application/octet-stream) or opens up a zip folder. This is usually the case when you have a mime-type and content-type mismatch and can get even uglier.. so what’s the solution? You have to define new Office 2007 mime types in your web server (or more precisely, server-side mime type database) so it knows how to communicate the content properly to the web browser. Office 2007 uses the new zipped XML OpenDocument format. After Googling for a few minutes and not finding the solution on the first four pages of searches I came to my buddy David Overton’s page – Now I remember where I read about the new Office 2007 mime types! I’m sure David will be extatic to know his hard work (which applies to IIS6 by the way) is now going to help Apache users everywhere get Office 2007 documents easilly. Joke aside, truth is Apache is the dominant web server and there is at least 70% chance you’re browsing an Apache site (you are right now, it’s what powers Vladville!) or about 98% chance if you’re not in a corporate environment.
First you’ll notice that there are many different mime types associated with Office 2007 OpenDocument format for just Word documents and templates: .docx, docm, dotm, dotx:
.docm = application/vnd.ms-word.document
.docx = application/vnd.openxmlformats-
.dotm = application/vnd.ms-word.template
.dotx = application/vnd.openxmlformats-officedocument.
You can hardcode in one of these at a time, however, there is a shortcut. Just open your /etc/mime.types and add this to the last line:
application/vnd.openxmlformats docx pptx xlsx
Restart the Apache service and you’re set. This takes care of the top three popular Office 2007 formats. If you don’t have access to the system mime type configuration (you likely don’t) you can always override the settings using your .htaccess file. Enjoy and thank David! Here is the end result:
Extra note: Above applies to Apache servers hosted on Linux, however, if you host your Apache server on Windows the server distribution is likely shipping a mime configuration database in a specific path, one that you may or may not be able to find easilly. No worries, you can always add the content types directly to the httpd.conf file which is very easy to locate in most popular Windows Apache distributions such as Vertrigo. To add the new mime type directly in Apache httpd.conf (for Linux fans, /etc/httpd/conf/httpd.conf):
AddType application/vnd.openxmlformats .docx .pptx .xlsx
Please note that httpd.conf definitions override the /etc/mime.types definitions and dependant on the directory configuration, htaccess can (and usually does) override both.