My application relies heavily on the hierarchy of its entities and the hierarchy also gives needed context to the entities details page. Hence my current URL scheme represents the hierarchy: /grandparent/parent/childSince I'm working towards having everything be user created content, the nesting is bound to change from time to time. But I really hate dead links, so I think my options are:append -[ID] to every URL and redirect the path if an already changed path is openedsame as above but without the path (URL would only change, when the name of the entity is changedtrack all the path changes and redirect to new path if an old path is opened. This might get weird, when a new entity has a path that once existed. I would need to display a message saying, that the user possibly meant to visit a different resource that once was at that locationI like the third option insofar as the URLs stay clean and ID free, but I think the first option is the most solid one. Am I missing something?
Should I use semantic URLs when they might change from time to time?
url;clean urls