diff --git wp-includes/general-template.php wp-includes/general-template.php
index 939e9de..7c10c58 100644
--- wp-includes/general-template.php
+++ wp-includes/general-template.php
@@ -197,6 +197,24 @@ function wp_loginout($redirect = '', $echo = true) {
 }
 
 /**
+ * Returns the user registration URL
+ *
+ * Returns the URL that allows the user to log in to the site
+ *
+ * @since 3.5.0
+ * @uses site_url() To generate the log in URL
+ * @uses apply_filters() calls 'register_url' hook on final url
+ *
+ * @return string
+ */
+function wp_register_url($redirect = '') {
+	if ( is_multisite() )
+		return apply_filters( 'wp_signup_location', network_site_url( 'wp-signup.php' ) );
+
+	return apply_filters( 'register_url', site_url( 'wp-login.php?action=register', 'login' ), $redirect );
+}
+
+/**
  * Returns the Log Out URL.
  *
  * Returns the URL that allows the user to log out of the site
@@ -247,6 +265,45 @@ function wp_login_url($redirect = '', $force_reauth = false) {
 }
 
 /**
+ * Return the full URL of the current page
+ *
+ * @since 3.5.0
+ *
+ * @return string
+ */
+function get_current_url() {
+	return set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
+}
+
+/**
+ * Whether the current request is for a login page
+ *
+ * @since 3.5.0
+ *
+ * @return bool
+ */
+function is_login_page() {
+	$current_url = remove_query_arg( array( 'redirect_to', 'reauth', 'loggedout', 'action' ), get_current_url() );
+
+	return wp_login_url() == $current_url;
+}
+
+/**
+ * Whether the current request is for the registration page
+ *
+ * @since 3.5.0
+ *
+ * @return bool
+ */
+function is_register_page() {
+	$current_url = remove_query_arg( array( 'action', 'redirect_to', 'loggedout', ), get_current_url() );
+
+	$register_url = remove_query_arg( array( 'action' ), wp_register_url() );
+
+	return $current_url == $register_url;
+}
+
+/**
  * Provides a simple login form for use anywhere within WordPress. By default, it echoes
  * the HTML immediately. Pass array('echo'=>false) to return the string instead.
  *
@@ -338,7 +395,7 @@ function wp_register( $before = '<li>', $after = '</li>', $echo = true ) {
 
 	if ( ! is_user_logged_in() ) {
 		if ( get_option('users_can_register') )
-			$link = $before . '<a href="' . site_url('wp-login.php?action=register', 'login') . '">' . __('Register') . '</a>' . $after;
+			$link = $before . '<a href="' . wp_register_url() . '">' . __('Register') . '</a>' . $after;
 		else
 			$link = '';
 	} else {
diff --git wp-login.php wp-login.php
index 842cd31..673148d 100644
--- wp-login.php
+++ wp-login.php
@@ -507,7 +507,7 @@ case 'rp' :
 <p id="nav">
 <a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a>
 <?php if ( get_option( 'users_can_register' ) ) : ?>
- | <a href="<?php echo esc_url( site_url( 'wp-login.php?action=register', 'login' ) ); ?>"><?php _e( 'Register' ); ?></a>
+ | <a href="<?php echo esc_url( wp_register_url() ); ?>"><?php _e( 'Register' ); ?></a>
 <?php endif; ?>
 </p>
 
