Cloud Storage - Website Configuration Not Operating As Documented

GET requests to a subdirectory resolve to `index.html`, not a naked path like the documentation says. This is a significant limitation in terms of using Cloud Storage for static web hosting. My static website resolves to https://example.com/subdirectory/index.html, not https://example.com/subdirectory. In other words, when I navigate to https://example.com/subdirectory I get redirected to https://example.com/subdirectory/index.html. The bucket receives requests via the Global HTTTPS Load Balancer. Please advise.

https://cloud.google.com/storage/docs/gsutil/commands/web#description

1. The main_page_suffix applies to each subdirectory of the bucket. For example, with the main_page_suffix configured to be index.html, a GET request for http://www.example.com retrieves http://www.example.com/index.html but shows http://www.example.com as the URL to the requester, and a GET request for http://www.example.com/photos retrieves http://www.example.com/photos/index.html but shows http://www.example.com/photos as the URL to the requester.

 

Solved Solved
0 3 285
1 ACCEPTED SOLUTION

The fix for me was to switch to App Engine for website hosting. Cloud storage is fine for a static website provided there are no subdirectories because if there are you will not be able to get rid of the `.html` in the browsers URL bar. There may be a way to do it with URL rewrites but I was not able to find a timely solution.

I would like the "/index.html" to not be in the address bar of the browser. The documentation says it will not be, but it is.

"a GET request for http://www.example.com/photos retrieves http://www.example.com/photos/index.html but shows http://www.example.com/photos as the URL to the requester."

View solution in original post

3 REPLIES 3

What has been your Google Cloud Storage configuration?  I think I am sensing that if you perform an

HTTP GET https://example.com/subdirectory 

You are being served up the content from  the object gs://<bucketName>/subdirectory/index.html

This feels right to me.  What are you hoping will be returned when you perform a

HTTP GET https://example.com/subdirectory 

The fix for me was to switch to App Engine for website hosting. Cloud storage is fine for a static website provided there are no subdirectories because if there are you will not be able to get rid of the `.html` in the browsers URL bar. There may be a way to do it with URL rewrites but I was not able to find a timely solution.

I would like the "/index.html" to not be in the address bar of the browser. The documentation says it will not be, but it is.

"a GET request for http://www.example.com/photos retrieves http://www.example.com/photos/index.html but shows http://www.example.com/photos as the URL to the requester."

I have the same issue, and based on the GCP documentation it should remove the subdirectory "index.html" from the URL when you set the page suffix to be index.html, but this apply only to the main domain not all the subdirectory, so the GCP documentation is wrong or there is a bug.

Top Labels in this Space