Custom post type “preview” not working

The code you provided works as expected on a fresh install of WordPress (4.3.1 in this case). The ideas below shouldn’t be considered an answer, so much as a checklist to aid in debugging the issue by narrowing the scope of the problem:

  1. You’ll need to be logged in as a user with permission to view drafs to avoid a 404 or redirect.

  2. Try disabling your plugins one by one to see if perhaps one of the plugins has established a conflicting rewrite rule.

  3. Check your web server configuration (such as .htaccess on Apache) to see if there are any redirect rules in place there.

  4. Finally, consider temporarily switching to another theme and adding your custom post type there to see if you get the same results. If a new theme solves the issue with your code, perhaps the conflicts all exist within your current theme.