Well, lest anyone forget that I am a computer geek, I must occasionally post something computer related. I have just the thing!
For anyone who uses Apple’s iWeb software to blog, share photos or what-have-you, a recent series of updates were released (first 1.1, then soon thereafter 1.1.1). The kind of errors I encountered were terse and uninformative, Publish Error
An error occurred while publishing file “/Web/Sites/iWeb….. I am not the only one who has had these problems. I now know why. I’m going to share with the world at large my solution.
Please note: This may or may not be the “fix” that others still experiencing difficulty are in needing. This only corrected my problems. Your mileage may vary, most especially because the culprit is:
SQUID CACHING PROXY!
dunh dunh dunh….
I can’t speak for everyone, but my problem was tied to the fact that I run DansGuardian on top of Squid Caching Proxy (if you know anything about DansGuardian, it requires a proxy server to function). For those too busy to follow the links (or those who don’t care), DansGuardian is an internet filter, free for non-commercial use. I have six children at home, so I prefer having a somewhat filtered internet. The system has been effective and generally hasn’t posed any problems.
iWeb reportedly repaired all of the error occurred while publishing problems with 1.1.1 and yet my problems remained. I began to suspect that the problem might not lie within iWeb. I monitored my access.log file in real-time while I attempted to publish my iWeb sites. This is what I found:
Needing more information, I watched the cache.log file and this is what I found:
2006/06/01 19:36:14| parseHttpRequest: Unsupported method 'ACL'
Whoa. I did some digging and discovered that there are several HTTP/1.1 compliant methods for connecting to a web server or service. GET and POST are the most common. A newer extension is PROPFIND (which .Mac uses with WebDAV uploading). However, ACL is not one of the recognized methods, so Squid was killing the attempt to upload. Luckily, squid has a configuration option where you can define up to 20 extended methods.
# TAG: extension_methods
# Squid only knows about standardized HTTP request methods.
# You can add up to 20 additional "extension" methods here.
#
#Default:
# none
So I add a line like this and restart Squid:
extension_methods ACL
I watch the cache.log file this time and iWeb still won’t publish because:
2006/06/01 19:37:34| parseHttpRequest: Unsupported method 'DMMKPATH'
Another one! So now my line in Squid looks like:
extension_methods ACL DMMKPATH
After restarting Squid another time with these new configuration options, much to my relief, iWeb published flawlessly!
So what does this mean for Joe AverageUser? Well, the important information here is simply that iWeb uses some non-typical (at least from an HTTP/1.1 standards point of view) HTTP methods to contact .Mac (namely idisk.mac.com) in order to publish your sites. I’m fairly certain that not every user is going to have a Squid proxy in their basement, leave alone DansGuardian. However, if you have any kind of filtering or proxying between the computer running iWeb and the wide open internet, there is a possibility that these non-standard HTTP methods are being blocked. For all I know, there are even routers that may have this functionality built-in. Possible solutions might include allowing unrestricted access to idisk.mac.com.
As I said before, your mileage may vary. This was my experience, and my solution. If you have any comments or questions go ahead and leave them in the area provided!
Update: There appears to be one more extension method related to iWeb which would be needed. This is DMINDEX. This would presumably be DotMacINDEX or something like that. Anyway, if you’re following this thread or looking for help, there’s the one last thing I can offer. I credit Michael Newbery with that tidbit. I must not have been making all of the same calls or I expect I would have seen that one too.