diff --git src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php
index c5ddaddf9..f06425d07 100644
--- src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php
+++ src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php
@@ -154,7 +154,7 @@
 	<div class="thread-content" data-thread-id="{{data.id}}">
 		<div class="thread-subject">
 			<span class="thread-count">({{data.count}})</span>
-			<a class="subject" href="#view/{{data.id}}">{{data.subject}}</a>
+			<a class="subject" href="../view/{{data.id}}/">{{data.subject}}</a>
 		</div>
 		<p class="excerpt">{{data.excerpt}}</p>
 	</div>
@@ -203,7 +203,7 @@
 
 					<# } #>
 
-					<a href="#view/{{data.id}}" class="message-action-view bp-tooltip bp-icons" data-bp-tooltip="<?php esc_attr_e( 'View full conversation and reply.', 'buddypress' ); ?>">
+					<a href="../view/{{data.id}}/" class="message-action-view bp-tooltip bp-icons" data-bp-action="view" data-bp-tooltip="<?php esc_attr_e( 'View full conversation and reply.', 'buddypress' ); ?>">
 						<span class="bp-screen-reader-text"><?php esc_html_e( 'View full conversation and reply.', 'buddypress' ); ?></span>
 					</a>
 				</div>
diff --git src/bp-templates/bp-nouveau/includes/messages/functions.php src/bp-templates/bp-nouveau/includes/messages/functions.php
index 191a85381..97c1b09f7 100644
--- src/bp-templates/bp-nouveau/includes/messages/functions.php
+++ src/bp-templates/bp-nouveau/includes/messages/functions.php
@@ -114,6 +114,7 @@ function bp_nouveau_messages_localize_scripts( $params = array() ) {
 			'one'  => __( '(and 1 other)', 'buddypress' ),
 			'more' => __( '(and %d others)', 'buddypress' ),
 		),
+		'rootUrl' => trailingslashit( str_replace( home_url(), '', bp_displayed_user_domain() ) . bp_get_messages_slug() ),
 	);
 
 	// Star private messages.
@@ -178,15 +179,10 @@ function bp_nouveau_messages_adjust_nav() {
 
 		if ( 'notices' === $secondary_nav_item->slug ) {
 			bp_core_remove_subnav_item( bp_get_messages_slug(), $secondary_nav_item->slug, 'members' );
-		} else {
-			$params = array( 'link' => '#' . $secondary_nav_item->slug );
-
-			// Make sure Admins won't write a messages from the user's account.
-			if ( 'compose' === $secondary_nav_item->slug ) {
-				$params['user_has_access'] = bp_is_my_profile();
-			}
-
-			$bp->members->nav->edit_nav( $params, $secondary_nav_item->slug, bp_get_messages_slug() );
+		} elseif ( 'compose' === $secondary_nav_item->slug ) {
+			$bp->members->nav->edit_nav( array(
+				'user_has_access' => bp_is_my_profile()
+			), $secondary_nav_item->slug, bp_get_messages_slug() );
 		}
 	}
 }
@@ -204,12 +200,10 @@ function bp_nouveau_messages_adjust_admin_nav( $admin_nav ) {
 	foreach ( $admin_nav as $nav_iterator => $nav ) {
 		$nav_id = str_replace( 'my-account-messages-', '', $nav['id'] );
 
-		if ( 'my-account-messages' !== $nav_id ) {
-			if ( 'notices' === $nav_id ) {
-				$admin_nav[ $nav_iterator ]['href'] = esc_url( add_query_arg( array( 'page' => 'bp-notices' ), bp_get_admin_url( 'users.php' ) ) );
-			} else {
-				$admin_nav[ $nav_iterator ]['href'] = $user_messages_link . '#' . trim( $nav_id );
-			}
+		if ( 'notices' === $nav_id ) {
+			$admin_nav[ $nav_iterator ]['href'] = esc_url( add_query_arg( array(
+				'page' => 'bp-notices'
+			), bp_get_admin_url( 'users.php' ) ) );
 		}
 	}
 
diff --git src/bp-templates/bp-nouveau/js/buddypress-messages.js src/bp-templates/bp-nouveau/js/buddypress-messages.js
index 7c1ad32d4..699072f8f 100644
--- src/bp-templates/bp-nouveau/js/buddypress-messages.js
+++ src/bp-templates/bp-nouveau/js/buddypress-messages.js
@@ -37,7 +37,10 @@ window.bp = window.bp || {};
 
 			this.setupNav();
 
-			Backbone.history.start();
+			Backbone.history.start( {
+				pushState: true,
+				root: BP_Nouveau.messages.rootUrl
+			} );
 		},
 
 		setupNav: function() {
@@ -69,11 +72,11 @@ window.bp = window.bp || {};
 						}
 
 						// Navigate back to current box
-						self.router.navigate( self.box, { trigger: true } );
+						self.router.navigate( self.box + '/', { trigger: true } );
 
 					// Otherwise load it
 					} else {
-						self.router.navigate( 'compose', { trigger: true } );
+						self.router.navigate( 'compose/', { trigger: true } );
 					}
 
 				// Other views are classic.
@@ -82,7 +85,7 @@ window.bp = window.bp || {};
 					if ( self.box !== view_id || ! _.isUndefined( self.views.get( 'compose' ) ) ) {
 						self.clearViews();
 
-						self.router.navigate( view_id, { trigger: true } );
+						self.router.navigate( view_id + '/', { trigger: true } );
 					}
 				}
 			} );
@@ -616,7 +619,7 @@ window.bp = window.bp || {};
 				form.get( 'view' ).remove();
 				bp.Nouveau.Messages.views.remove( { id: 'compose', view: form } );
 
-				bp.Nouveau.Messages.router.navigate( 'sentbox', { trigger: true } );
+				bp.Nouveau.Messages.router.navigate( 'sentbox/', { trigger: true } );
 			} ).fail( function( response ) {
 				if ( response.feedback ) {
 					bp.Nouveau.Messages.displayFeedback( response.feedback, response.type );
@@ -712,8 +715,11 @@ window.bp = window.bp || {};
 			bp.Nouveau.Messages.removeFeedback();
 
 			// If the click is done on an active conversation, open it.
-			if ( $( event.currentTarget ).closest( '.thread-item' ).hasClass( 'selected' ) ) {
-				this.loadSingleView( event );
+			if ( target.closest( '.thread-item' ).hasClass( 'selected' ) ) {
+				bp.Nouveau.Messages.router.navigate(
+					'view/' + target.closest( '.thread-content' ).data( 'thread-id' ) + '/',
+					{ trigger: true }
+				);
 
 			// Otherwise activate the conversation and display its preview.
 			} else {
@@ -721,15 +727,6 @@ window.bp = window.bp || {};
 
 				$( '.message-action-view' ).focus();
 			}
-		},
-
-		loadSingleView: function( event ) {
-			event.preventDefault();
-
-			bp.Nouveau.Messages.router.navigate(
-				'view/' + $( event.currentTarget ).closest( '.thread-content' ).data( 'thread-id' ),
-				{ trigger: true }
-			);
 		}
 	} );
 
@@ -895,7 +892,17 @@ window.bp = window.bp || {};
 
 			mid = model.get( 'id' );
 
-			if ( 'star' === action || 'unstar' === action ) {
+			// Open the full conversation
+			if ( 'view' === action ) {
+				bp.Nouveau.Messages.router.navigate(
+					'view/' + mid + '/',
+					{ trigger: true }
+				);
+
+				return;
+
+			// Star/Unstar actions needs to use a specific id and nonce.
+			} else if ( 'star' === action || 'unstar' === action ) {
 				options.data = {
 					'star_nonce' : model.get( 'star_nonce' )
 				};
@@ -1323,11 +1330,11 @@ window.bp = window.bp || {};
 
 	bp.Nouveau.Messages.Router = Backbone.Router.extend( {
 		routes: {
-			'compose' : 'composeMessage',
-			'view/:id': 'viewMessage',
-			'sentbox' : 'sentboxView',
-			'starred' : 'starredView',
-			'inbox'   : 'inboxView',
+			'compose/' : 'composeMessage',
+			'view/:id/': 'viewMessage',
+			'sentbox/' : 'sentboxView',
+			'starred/' : 'starredView',
+			'inbox/'   : 'inboxView',
 			''        : 'inboxView'
 		},
 
