The issue that I am currently experiencing is when I attempt to put in a specific route for example: "www.example.com/projects". This then produces:
Error: Not Found
The requested URL /projects was not found on this server.
Note: This does not happen when navigating to that route via UI, it only happens when refreshing the page or typing in the specific url.
One thing to mention is the I am using the google cloud platform and I set up the application first using angular cli.
I have seen multiple things stating that I have to serve the index.html for each route however I cannot find any documentation as to how to do that or even if that is the correct way to go about it.
I am not sure what all you would need to help me figure this out so I will update with what you need to assist.
I got the Hash Location Strategy working, but I am trying to get the Path Location Strategy working.
Thank you for all help!
add useHash:true in the router module it should works for angular 5 and java like this
In your app.yaml file, update your handler's regular expression to look like this:
The dist file is the static output from cli. Add any file extensions in the first handler if your app uses more.
Hope it works
1- Your server side application should only render the base route
"/"
So that your Single page application can handle the routing to/projects
.2- You may also overcome this issue by adding hash
#
prefix to your client side routing like"www.example.com/#/projects"
In AngularJs you would do this by adding below code to your
config
functionI have made use of HashLocationStrategy available in Angular for this. I am unable to use PathLocationStrategy in my angular application when deploying it on Google cloud instance. If I use PathLocationStrategy, then I get the error:
For achieving HashLocationStrategy I simply used two lines of code in my app.module.ts
After all this I have realized it is better to use default path strategy that is available with angular, i.e., PathLocationStrategy. As told by Nicholas in the above answer, I am unable to find app.yaml file in my project structure which I created using angular-cli v1.4
It would be great if someone could guide me in a right direction here.
In case you're using PathLocationStrategy (html5 history) you need to have a handler to catch those dynamic routes
https://cloud.google.com/appengine/docs/standard/python/config/appref#handlers_element