You can pass the layout name as a GET
parameter and then change the design based on that. So your URL should be something like this:
http://domain.com/post-name?layout=layout-1
Now in your single.php
file or whatever file that renders the template, you can do this check to show the different layouts:
<?php
// If the header is different two, you should call for different headers too,
// Check this for showing different headers
// https://developer.wordpress.org/reference/functions/get_header/
if( isset( $_GET['layout'] ) && $_GET['layout'] == 'layout-1' ) {
// Show the design for for the first layout
}
else if ( ... ) {
// Show the design for other layouts
}