I have a question that is similar to another question but is different.

Consider a blog engine. Posts can be transitioned through state:

  • When a post is draft, the user visits /posts/draft/review/:id to review their submission as well as have others make comments on their submission.
  • When finished, posts are then submitted for approval.
  • The owner of the post can still review or cancel the approval submission at the same url: /posts/draft/review/:id.
  • When a post is approved, it becomes publicly visible for others to review/comment: /posts/history/:id. It's essentially the same UI as the draft/review, but with indication that the post is approved and publicly visible.

If a user was to visit the old draft URL /posts/draft/review/:id, when it has already been approved, which of the following should happen?

  1. Automatically redirect the user to /posts/history/:id. The negative side effect to this is that the context switch might be significant. When they're in the /posts/draft section, the UI could have menus to edit the post etc. I think users wouldn't feel in control and wonder why menus have changed etc.

  2. Display a message indicating that the draft was already approved and provide them with a link to view the approved post. The advantage to this approach is that we don't take control away from the user and take them out of "draft" mode without them explicitly requesting the context switch.


download bmml source – Wireframes created with Balsamiq Mockups

As I've mentioned in the comments, our real application is similar to that of distributed source control where your draft is essentially your fork of something.

  • Does having 2 possible locations for the same piece of content really make sense? A user rarely pays attention to the URL, all that matters is the content on the page.
    – cimmanon
    Commented Oct 4, 2013 at 20:12

2 Answers 2


In Cool URLs don't change, Tim Berners-Lee states what URLs should not include. The most pertinent is:

Status- directories like "old" and "draft" and so on, not to mention "latest" and "cool" appear all over file systems. Documents change status - or there would be no point in producing drafts. The latest version of a document needs a persistent identifier whatever its status is. Keep the status out of the name.

  • While agree with this general premise, our application is similar in nature to distributed source control. Think of how Github or BitBucket can link directly to a branch of work. If a branch is created, linked to and then deleted, the link is no longer valid. Commented Oct 7, 2013 at 11:34

The solution is mostly depend on context, i.e. is it useful to display to author his published post or return him to his admin area to manage other posts.

But you could try combined option, which is to redirect to published post and display notification on post's status change. It's non-obtrusive, clear and allows to switch to related tasks using links in notification area.
enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.