Lets use the example of october exe, which is in a bucket called downloads.bucketexplorer.com (this is the bucket name).
We can access it in three different ways:
http://downloads.bucketexplorer.com/win ... 0.27.0.exe
OR
http://s3.amazonaws.com/downloads.bucke ... 0.27.0.exe
OR
http://downloads.bucketexplorer.com.s3. ... 0.27.0.exe
Here downloads.bucketexplorer.com is the bucket name and win/Bucket-Explorer-Self-Extractor-2007.10.27.0.exe is the file name.
So, you can use the bucket name as a "host" within s3.amazonaws.com subdomain or use bucketname as a "diectory" within s3.amazonaws.com host.
bucketname.s3.amazonaws.com (bucket as a host)
s3.amazonaws.com/bucketname (bucket as a directory).
We have changed Bucket Explorer to generate URLs using bucket as host instead of bucket as a directory. This will be the new default behaviour. I can explain in a month that why do we think this should be the "default" way.
When you use bucket name as "host", it cannot contain an uppercase letter or underscores, which are perfectly valid & legal when you use bucket name as a directory. So, we need to add backward compatibility to generate URLs in old format if the bucket already has upper case or underscores.
EDIT: - This rule that a host name cannot be upper case or underscore is not our rule. This applies globally on internet for any host name.
Thanks
Saurabh