当前位置: 首页>>代码示例>>PHP>>正文


PHP redirect_canonical函数代码示例

本文整理汇总了PHP中redirect_canonical函数的典型用法代码示例。如果您正苦于以下问题:PHP redirect_canonical函数的具体用法?PHP redirect_canonical怎么用?PHP redirect_canonical使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了redirect_canonical函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: test_https_request_with_https_home

 /**
  * @ticket 27954
  */
 public function test_https_request_with_https_home()
 {
     add_filter('home_url', array($this, 'set_https'));
     $redirect = redirect_canonical($this->https, false);
     $this->assertEquals($redirect, false);
     remove_filter('home_url', array($this, 'set_https'));
 }
开发者ID:atimmer,项目名称:wordpress-develop-mirror,代码行数:10,代码来源:https.php

示例2: get_canonical

 function get_canonical($test_url)
 {
     $test_url = home_url($test_url);
     $can_url = redirect_canonical($test_url, false);
     if (!$can_url) {
         return $test_url;
     }
     // No redirect will take place for this request
     return $can_url;
 }
开发者ID:rmccue,项目名称:wordpress-unit-tests,代码行数:10,代码来源:canonical.php

示例3: restore_request_uri

 /**
  * When WordPress sees a url like http://foobar.com/nggallery/page/2/, it thinks that it is an
  * invalid url. Therefore, we modify the request uri before WordPress parses the request, and then
  * restore the request uri afterwards
  */
 function restore_request_uri()
 {
     if (isset($_SERVER['ORIG_REQUEST_URI'])) {
         $request_uri = $_SERVER['ORIG_REQUEST_URI'];
         $_SERVER['UNENCODED_URL'] = $_SERVER['HTTP_X_ORIGINAL_URL'] = $_SERVER['REQUEST_URI'] = $request_uri;
     } else {
         wp_old_slug_redirect();
         redirect_canonical();
     }
 }
开发者ID:JeffreyBue,项目名称:jb,代码行数:15,代码来源:module.wordpress_routing.php

示例4: restore_request_uri

 /**
  * When WordPress sees a url like http://foobar.com/nggallery/page/2/, it thinks that it is an
  * invalid url. Therefore, we modify the request uri before WordPress parses the request, and then
  * restore the request uri afterwards
  */
 function restore_request_uri()
 {
     if (isset($_SERVER['ORIG_REQUEST_URI'])) {
         $request_uri = $_SERVER['ORIG_REQUEST_URI'];
         $_SERVER['UNENCODED_URL'] = $_SERVER['HTTP_X_ORIGINAL_URL'] = $_SERVER['REQUEST_URI'] = $request_uri;
         if (isset($_SERVER['ORIG_PATH_INFO'])) {
             $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];
         }
     } else {
         if (self::$_use_old_slugs) {
             wp_old_slug_redirect();
         }
         if (self::$_use_canonical_redirect) {
             redirect_canonical();
         }
     }
 }
开发者ID:uwmadisoncals,项目名称:Cluster-Plugins,代码行数:22,代码来源:module.wordpress_routing.php

示例5: redirect_canonical

/**
 * Redirects incoming links to the proper URL based on the site url.
 *
 * Search engines consider www.somedomain.com and somedomain.com to be two
 * different URLs when they both go to the same location. This SEO enhancement
 * prevents penality for duplicate content by redirecting all incoming links to
 * one or the other.
 *
 * Prevents redirection for feeds, trackbacks, searches, comment popup, and
 * admin URLs. Does not redirect on IIS, page/post previews, and on form data.
 *
 * Will also attempt to find the correct link when a user enters a URL that does
 * not exist based on exact WordPress query. Will instead try to parse the URL
 * or query in an attempt to figure the correct page to go to.
 *
 * @since 2.3.0
 * @uses $wp_rewrite
 * @uses $is_IIS
 *
 * @param string $requested_url Optional. The URL that was requested, used to
 *		figure if redirect is needed.
 * @param bool $do_redirect Optional. Redirect to the new URL.
 * @return null|false|string Null, if redirect not needed. False, if redirect
 *		not needed or the string of the URL
 */
function redirect_canonical($requested_url = null, $do_redirect = true)
{
    global $wp_rewrite, $is_IIS, $wp_query, $wpdb;
    if (is_trackback() || is_search() || is_comments_popup() || is_admin() || $is_IIS || isset($_POST) && count($_POST) || is_preview() || is_robots()) {
        return;
    }
    if (!$requested_url) {
        // build the URL in the address bar
        $requested_url = is_ssl() ? 'https://' : 'http://';
        $requested_url .= $_SERVER['HTTP_HOST'];
        $requested_url .= $_SERVER['REQUEST_URI'];
    }
    $original = @parse_url($requested_url);
    if (false === $original) {
        return;
    }
    // Some PHP setups turn requests for / into /index.php in REQUEST_URI
    // See: http://trac.wordpress.org/ticket/5017
    // See: http://trac.wordpress.org/ticket/7173
    // Disabled, for now:
    // $original['path'] = preg_replace('|/index\.php$|', '/', $original['path']);
    $redirect = $original;
    $redirect_url = false;
    // Notice fixing
    if (!isset($redirect['path'])) {
        $redirect['path'] = '';
    }
    if (!isset($redirect['query'])) {
        $redirect['query'] = '';
    }
    if (is_singular() && 1 > $wp_query->post_count && ($id = get_query_var('p'))) {
        $vars = $wpdb->get_results($wpdb->prepare("SELECT post_type, post_parent FROM {$wpdb->posts} WHERE ID = %d", $id));
        if (isset($vars[0]) && ($vars = $vars[0])) {
            if ('revision' == $vars->post_type && $vars->post_parent > 0) {
                $id = $vars->post_parent;
            }
            if ($redirect_url = get_permalink($id)) {
                $redirect['query'] = remove_query_arg(array('p', 'page_id', 'attachment_id', 'post_type'), $redirect['query']);
            }
        }
    }
    // These tests give us a WP-generated permalink
    if (is_404()) {
        // Redirect ?page_id, ?p=, ?attachment_id= to their respective url's
        $id = max(get_query_var('p'), get_query_var('page_id'), get_query_var('attachment_id'));
        if ($id && ($redirect_post = get_post($id))) {
            $post_type_obj = get_post_type_object($redirect_post->post_type);
            if ($post_type_obj->public) {
                $redirect_url = get_permalink($redirect_post);
                $redirect['query'] = remove_query_arg(array('p', 'page_id', 'attachment_id', 'post_type'), $redirect['query']);
            }
        }
        if (!$redirect_url) {
            $redirect_url = redirect_guess_404_permalink();
        }
    } elseif (is_object($wp_rewrite) && $wp_rewrite->using_permalinks()) {
        // rewriting of old ?p=X, ?m=2004, ?m=200401, ?m=20040101
        if (is_attachment() && !empty($_GET['attachment_id']) && !$redirect_url) {
            if ($redirect_url = get_attachment_link(get_query_var('attachment_id'))) {
                $redirect['query'] = remove_query_arg('attachment_id', $redirect['query']);
            }
        } elseif (is_single() && !empty($_GET['p']) && !$redirect_url) {
            if ($redirect_url = get_permalink(get_query_var('p'))) {
                $redirect['query'] = remove_query_arg(array('p', 'post_type'), $redirect['query']);
            }
            if (get_query_var('page')) {
                $redirect_url = trailingslashit($redirect_url) . user_trailingslashit(get_query_var('page'), 'single_paged');
                $redirect['query'] = remove_query_arg('page', $redirect['query']);
            }
        } elseif (is_single() && !empty($_GET['name']) && !$redirect_url) {
            if ($redirect_url = get_permalink($wp_query->get_queried_object_id())) {
                $redirect['query'] = remove_query_arg('name', $redirect['query']);
            }
        } elseif (is_page() && !empty($_GET['page_id']) && !$redirect_url) {
            if ($redirect_url = get_permalink(get_query_var('page_id'))) {
//.........这里部分代码省略.........
开发者ID:laiello,项目名称:cartonbank,代码行数:101,代码来源:canonical.php

示例6: redirect_canonical

/**
 * Redirects incoming links to the proper URL based on the site url.
 *
 * Search engines consider www.somedomain.com and somedomain.com to be two
 * different URLs when they both go to the same location. This SEO enhancement
 * prevents penality for duplicate content by redirecting all incoming links to
 * one or the other.
 *
 * Prevents redirection for feeds, trackbacks, searches, comment popup, and
 * admin URLs. Does not redirect on IIS, page/post previews, and on form data.
 *
 * Will also attempt to find the correct link when a user enters a URL that does
 * not exist based on exact WordPress query. Will instead try to parse the URL
 * or query in an attempt to figure the correct page to go to.
 *
 * @since 2.3.0
 * @uses $wp_rewrite
 * @uses $is_IIS
 *
 * @param string $requested_url Optional. The URL that was requested, used to
 *		figure if redirect is needed.
 * @param bool $do_redirect Optional. Redirect to the new URL.
 * @return null|false|string Null, if redirect not needed. False, if redirect
 *		not needed or the string of the URL
 */
function redirect_canonical($requested_url=null, $do_redirect=true) {
	global $wp_rewrite, $is_IIS, $wp_query, $wpdb;

	if ( is_trackback() || is_search() || is_comments_popup() || is_admin() || $is_IIS || ( isset($_POST) && count($_POST) ) || is_preview() || is_robots() )
		return;

	if ( !$requested_url ) {
		// build the URL in the address bar
		$requested_url  = ( !empty($_SERVER['HTTPS'] ) && strtolower($_SERVER['HTTPS']) == 'on' ) ? 'https://' : 'http://';
		$requested_url .= $_SERVER['HTTP_HOST'];
		$requested_url .= $_SERVER['REQUEST_URI'];
	}

	$original = @parse_url($requested_url);
	if ( false === $original )
		return;

	// Some PHP setups turn requests for / into /index.php in REQUEST_URI
	// See: http://trac.wordpress.org/ticket/5017
	// See: http://trac.wordpress.org/ticket/7173
	// Disabled, for now:
	// $original['path'] = preg_replace('|/index\.php$|', '/', $original['path']);

	$redirect = $original;
	$redirect_url = false;

	// Notice fixing
	if ( !isset($redirect['path']) )  $redirect['path'] = '';
	if ( !isset($redirect['query']) ) $redirect['query'] = '';

	if ( is_singular() && 1 > $wp_query->post_count && ($id = get_query_var('p')) ) {

		$vars = $wpdb->get_results( $wpdb->prepare("SELECT post_type, post_parent FROM $wpdb->posts WHERE ID = %d", $id) );

		if ( isset($vars[0]) && $vars = $vars[0] ) {
			if ( 'revision' == $vars->post_type && $vars->post_parent > 0 )
				$id = $vars->post_parent;

			if ( $redirect_url = get_permalink($id) )
				$redirect['query'] = remove_query_arg(array('p', 'page_id', 'attachment_id'), $redirect['query']);
		}
	}

	// These tests give us a WP-generated permalink
	if ( is_404() ) {
		$redirect_url = redirect_guess_404_permalink();
	} elseif ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) {
		// rewriting of old ?p=X, ?m=2004, ?m=200401, ?m=20040101
		if ( is_single() && !empty($_GET['p']) && ! $redirect_url ) {
			if ( $redirect_url = get_permalink(get_query_var('p')) )
				$redirect['query'] = remove_query_arg('p', $redirect['query']);
			if ( get_query_var( 'page' ) ) {
				$redirect_url = trailingslashit( $redirect_url ) . user_trailingslashit( get_query_var( 'page' ), 'single_paged' );
				$redirect['query'] = remove_query_arg( 'page', $redirect['query'] );
			}
		} elseif ( is_page() && !empty($_GET['page_id']) && ! $redirect_url ) {
			if ( $redirect_url = get_permalink(get_query_var('page_id')) )
				$redirect['query'] = remove_query_arg('page_id', $redirect['query']);
		} elseif ( !empty($_GET['m']) && ( is_year() || is_month() || is_day() ) ) {
			$m = get_query_var('m');
			switch ( strlen($m) ) {
				case 4: // Yearly
					$redirect_url = get_year_link($m);
					break;
				case 6: // Monthly
					$redirect_url = get_month_link( substr($m, 0, 4), substr($m, 4, 2) );
					break;
				case 8: // Daily
					$redirect_url = get_day_link(substr($m, 0, 4), substr($m, 4, 2), substr($m, 6, 2));
					break;
			}
			if ( $redirect_url )
				$redirect['query'] = remove_query_arg('m', $redirect['query']);
		// now moving on to non ?m=X year/month/day links
		} elseif ( is_day() && get_query_var('year') && get_query_var('monthnum') && !empty($_GET['day']) ) {
//.........这里部分代码省略.........
开发者ID:staylor,项目名称:develop.svn.wordpress.org,代码行数:101,代码来源:canonical.php

示例7: check_canonical_url

 public function check_canonical_url($requested_url = '', $do_redirect = true)
 {
     global $wp_query, $post, $is_IIS;
     // don't redirect in same cases as WP
     if (is_trackback() || is_search() || is_comments_popup() || is_admin() || is_preview() || is_robots() || $is_IIS && !iis7_supports_permalinks()) {
         return;
     }
     // don't redirect mysite.com/?attachment_id= to mysite.com/en/?attachment_id=
     if (1 == $this->options['force_lang'] && is_attachment() && isset($_GET['attachment_id'])) {
         return;
     }
     // if the default language code is not hidden and the static front page url contains the page name
     // the customizer lands here and the code below would redirect to the list of posts
     if (isset($_POST['wp_customize'], $_POST['customized'])) {
         return;
     }
     // don't redirect if we are on a static front page
     if ($this->options['redirect_lang'] && isset($this->page_on_front) && is_page($this->page_on_front)) {
         return;
     }
     if (empty($requested_url)) {
         $requested_url = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
     }
     if (is_single() || is_page()) {
         if (isset($post->ID) && $this->model->is_translated_post_type($post->post_type)) {
             $language = $this->model->get_post_language((int) $post->ID);
         }
     } elseif (is_category() || is_tag() || is_tax()) {
         $obj = $wp_query->get_queried_object();
         if ($this->model->is_translated_taxonomy($obj->taxonomy)) {
             $language = $this->model->get_term_language((int) $obj->term_id);
         }
     } elseif ($wp_query->is_posts_page) {
         $obj = $wp_query->get_queried_object();
         $language = $this->model->get_post_language((int) $obj->ID);
     }
     if (empty($language)) {
         $language = $this->curlang;
         $redirect_url = $requested_url;
     } else {
         // first get the canonical url evaluated by WP
         $redirect_url = !($redirect_url = redirect_canonical($requested_url, false)) ? $requested_url : $redirect_url;
         // then get the right language code in url
         $redirect_url = $this->options['force_lang'] ? $this->links_model->switch_language_in_link($redirect_url, $language) : $this->links_model->remove_language_from_link($redirect_url);
         // works only for default permalinks
     }
     // allow plugins to change the redirection or even cancel it by setting $redirect_url to false
     $redirect_url = apply_filters('pll_check_canonical_url', $redirect_url, $language);
     // the language is not correctly set so let's redirect to the correct url for this object
     if ($do_redirect && $redirect_url && $requested_url != $redirect_url) {
         wp_redirect($redirect_url, 301);
         exit;
     }
     return $redirect_url;
 }
开发者ID:rochellecanale,项目名称:wordpress,代码行数:55,代码来源:frontend-links.php

示例8: redirect_canonical

/**
 * Redirects incoming links to the proper URL based on the site url.
 *
 * Search engines consider www.somedomain.com and somedomain.com to be two
 * different URLs when they both go to the same location. This SEO enhancement
 * prevents penalty for duplicate content by redirecting all incoming links to
 * one or the other.
 *
 * Prevents redirection for feeds, trackbacks, searches, comment popup, and
 * admin URLs. Does not redirect on non-pretty-permalink-supporting IIS 7+,
 * page/post previews, WP admin, Trackbacks, robots.txt, searches, or on POST
 * requests.
 *
 * Will also attempt to find the correct link when a user enters a URL that does
 * not exist based on exact WordPress query. Will instead try to parse the URL
 * or query in an attempt to figure the correct page to go to.
 *
 * @since 2.3.0
 *
 * @global WP_Rewrite $wp_rewrite
 * @global bool $is_IIS
 * @global WP_Query $wp_query
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $requested_url Optional. The URL that was requested, used to
 *		figure if redirect is needed.
 * @param bool $do_redirect Optional. Redirect to the new URL.
 * @return string|void The string of the URL, if redirect needed.
 */
function redirect_canonical($requested_url = null, $do_redirect = true)
{
    global $wp_rewrite, $is_IIS, $wp_query, $wpdb, $wp;
    if (isset($_SERVER['REQUEST_METHOD']) && !in_array(strtoupper($_SERVER['REQUEST_METHOD']), array('GET', 'HEAD'))) {
        return;
    }
    // If we're not in wp-admin and the post has been published and preview nonce
    // is non-existent or invalid then no need for preview in query
    if (is_preview() && get_query_var('p') && 'publish' == get_post_status(get_query_var('p'))) {
        if (!isset($_GET['preview_id']) || !isset($_GET['preview_nonce']) || !wp_verify_nonce($_GET['preview_nonce'], 'post_preview_' . (int) $_GET['preview_id'])) {
            $wp_query->is_preview = false;
        }
    }
    if (is_trackback() || is_search() || is_comments_popup() || is_admin() || is_preview() || is_robots() || $is_IIS && !iis7_supports_permalinks()) {
        return;
    }
    if (!$requested_url && isset($_SERVER['HTTP_HOST'])) {
        // build the URL in the address bar
        $requested_url = is_ssl() ? 'https://' : 'http://';
        $requested_url .= $_SERVER['HTTP_HOST'];
        $requested_url .= $_SERVER['REQUEST_URI'];
    }
    $original = @parse_url($requested_url);
    if (false === $original) {
        return;
    }
    $redirect = $original;
    $redirect_url = false;
    // Notice fixing
    if (!isset($redirect['path'])) {
        $redirect['path'] = '';
    }
    if (!isset($redirect['query'])) {
        $redirect['query'] = '';
    }
    // If the original URL ended with non-breaking spaces, they were almost
    // certainly inserted by accident. Let's remove them, so the reader doesn't
    // see a 404 error with no obvious cause.
    $redirect['path'] = preg_replace('|(%C2%A0)+$|i', '', $redirect['path']);
    // It's not a preview, so remove it from URL
    if (get_query_var('preview')) {
        $redirect['query'] = remove_query_arg('preview', $redirect['query']);
    }
    if (is_feed() && ($id = get_query_var('p'))) {
        if ($redirect_url = get_post_comments_feed_link($id, get_query_var('feed'))) {
            $redirect['query'] = _remove_qs_args_if_not_in_url($redirect['query'], array('p', 'page_id', 'attachment_id', 'pagename', 'name', 'post_type', 'feed'), $redirect_url);
            $redirect['path'] = parse_url($redirect_url, PHP_URL_PATH);
        }
    }
    if (is_singular() && 1 > $wp_query->post_count && ($id = get_query_var('p'))) {
        $vars = $wpdb->get_results($wpdb->prepare("SELECT post_type, post_parent FROM {$wpdb->posts} WHERE ID = %d", $id));
        if (isset($vars[0]) && ($vars = $vars[0])) {
            if ('revision' == $vars->post_type && $vars->post_parent > 0) {
                $id = $vars->post_parent;
            }
            if ($redirect_url = get_permalink($id)) {
                $redirect['query'] = _remove_qs_args_if_not_in_url($redirect['query'], array('p', 'page_id', 'attachment_id', 'pagename', 'name', 'post_type'), $redirect_url);
            }
        }
    }
    // These tests give us a WP-generated permalink
    if (is_404()) {
        // Redirect ?page_id, ?p=, ?attachment_id= to their respective url's
        $id = max(get_query_var('p'), get_query_var('page_id'), get_query_var('attachment_id'));
        if ($id && ($redirect_post = get_post($id))) {
            $post_type_obj = get_post_type_object($redirect_post->post_type);
            if ($post_type_obj->public) {
                $redirect_url = get_permalink($redirect_post);
                $redirect['query'] = _remove_qs_args_if_not_in_url($redirect['query'], array('p', 'page_id', 'attachment_id', 'pagename', 'name', 'post_type'), $redirect_url);
            }
        }
//.........这里部分代码省略.........
开发者ID:hadywisam,项目名称:WordPress,代码行数:101,代码来源:canonical.php

示例9: redirect_canonical

/**
 * Redirects incoming links to the proper URL based on the site url.
 *
 * Search engines consider www.somedomain.com and somedomain.com to be two
 * different URLs when they both go to the same location. This SEO enhancement
 * prevents penalty for duplicate content by redirecting all incoming links to
 * one or the other.
 *
 * Prevents redirection for feeds, trackbacks, searches, comment popup, and
 * admin URLs. Does not redirect on IIS, page/post previews, and on form data.
 *
 * Will also attempt to find the correct link when a user enters a URL that does
 * not exist based on exact WordPress query. Will instead try to parse the URL
 * or query in an attempt to figure the correct page to go to.
 *
 * @since 2.3.0
 * @uses $wp_rewrite
 * @uses $is_IIS
 *
 * @param string $requested_url Optional. The URL that was requested, used to
 *		figure if redirect is needed.
 * @param bool $do_redirect Optional. Redirect to the new URL.
 * @return null|false|string Null, if redirect not needed. False, if redirect
 *		not needed or the string of the URL
 */
function redirect_canonical( $requested_url = null, $do_redirect = true ) {
	global $wp_rewrite, $is_IIS, $wp_query, $wpdb;

	if ( is_trackback() || is_search() || is_comments_popup() || is_admin() || !empty($_POST) || is_preview() || is_robots() || $is_IIS )
		return;

	if ( !$requested_url ) {
		// build the URL in the address bar
		$requested_url  = is_ssl() ? 'https://' : 'http://';
		$requested_url .= $_SERVER['HTTP_HOST'];
		$requested_url .= $_SERVER['REQUEST_URI'];
	}

	$original = @parse_url($requested_url);
	if ( false === $original )
		return;

	// Some PHP setups turn requests for / into /index.php in REQUEST_URI
	// See: http://trac.wordpress.org/ticket/5017
	// See: http://trac.wordpress.org/ticket/7173
	// Disabled, for now:
	// $original['path'] = preg_replace('|/index\.php$|', '/', $original['path']);

	$redirect = $original;
	$redirect_url = false;

	// Notice fixing
	if ( !isset($redirect['path']) )
		$redirect['path'] = '';
	if ( !isset($redirect['query']) )
		$redirect['query'] = '';

	if ( is_feed() && ( $id = get_query_var( 'p' ) ) ) {
		if ( $redirect_url = get_post_comments_feed_link( $id, get_query_var( 'feed' ) ) ) {
			$redirect['query'] = _remove_qs_args_if_not_in_url( $redirect['query'], array( 'p', 'page_id', 'attachment_id', 'pagename', 'name', 'post_type', 'feed'), $redirect_url );
			$redirect['path'] = parse_url( $redirect_url, PHP_URL_PATH );
		}
	}

	if ( is_singular() && 1 > $wp_query->post_count && ($id = get_query_var('p')) ) {

		$vars = $wpdb->get_results( $wpdb->prepare("SELECT post_type, post_parent FROM $wpdb->posts WHERE ID = %d", $id) );

		if ( isset($vars[0]) && $vars = $vars[0] ) {
			if ( 'revision' == $vars->post_type && $vars->post_parent > 0 )
				$id = $vars->post_parent;

			if ( $redirect_url = get_permalink($id) )
				$redirect['query'] = _remove_qs_args_if_not_in_url( $redirect['query'], array( 'p', 'page_id', 'attachment_id', 'pagename', 'name', 'post_type' ), $redirect_url );
		}
	}

	// These tests give us a WP-generated permalink
	if ( is_404() ) {

		// Redirect ?page_id, ?p=, ?attachment_id= to their respective url's
		$id = max( get_query_var('p'), get_query_var('page_id'), get_query_var('attachment_id') );
		if ( $id && $redirect_post = get_post($id) ) {
			$post_type_obj = get_post_type_object($redirect_post->post_type);
			if ( $post_type_obj->public ) {
				$redirect_url = get_permalink($redirect_post);
				$redirect['query'] = _remove_qs_args_if_not_in_url( $redirect['query'], array( 'p', 'page_id', 'attachment_id', 'pagename', 'name', 'post_type' ), $redirect_url );
			}
		}

		if ( ! $redirect_url ) {
			if ( $redirect_url = redirect_guess_404_permalink( $requested_url ) ) {
				$redirect['query'] = _remove_qs_args_if_not_in_url( $redirect['query'], array( 'page', 'feed', 'p', 'page_id', 'attachment_id', 'pagename', 'name', 'post_type' ), $redirect_url );
			}
		}

	} elseif ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) {
		// rewriting of old ?p=X, ?m=2004, ?m=200401, ?m=20040101
		if ( is_attachment() && !empty($_GET['attachment_id']) && ! $redirect_url ) {
			if ( $redirect_url = get_attachment_link(get_query_var('attachment_id')) )
//.........这里部分代码省略.........
开发者ID:staylor,项目名称:develop.svn.wordpress.org,代码行数:101,代码来源:canonical.php

示例10: filter_query

 /**
  * 
  */
 function filter_query()
 {
     if (is_comment_feed()) {
         if (isset($_GET['feed'])) {
             // remove possible XSS
             $url = esc_url_raw(remove_query_arg('feed', 301));
             wp_redirect($url);
             exit;
         }
         set_query_var('feed', '');
         // redirect_canonical will do the rest
         redirect_canonical();
     }
 }
开发者ID:pressbooks,项目名称:disable-comments,代码行数:17,代码来源:disable-comments.php

示例11: bogo_get_url_with_lang

function bogo_get_url_with_lang($url = null, $lang = null, $args = '')
{
    $defaults = array('using_permalinks' => true);
    $args = wp_parse_args($args, $defaults);
    if (!$url) {
        if (!($url = redirect_canonical($url, false))) {
            $url = is_ssl() ? 'https://' : 'http://';
            $url .= $_SERVER['HTTP_HOST'];
            $url .= $_SERVER['REQUEST_URI'];
        }
        if ($frag = strstr($url, '#')) {
            $url = substr($url, 0, -strlen($frag));
        }
        if ($query = @parse_url($url, PHP_URL_QUERY)) {
            parse_str($query, $query_vars);
            foreach (array_keys($query_vars) as $qv) {
                if (!get_query_var($qv)) {
                    $url = remove_query_arg($qv, $url);
                }
            }
        }
    }
    $default_locale = bogo_get_default_locale();
    if (!$lang) {
        $lang = $default_locale;
    }
    $home = set_url_scheme(get_option('home'));
    $home = trailingslashit($home);
    $url = remove_query_arg('lang', $url);
    if (!$args['using_permalinks']) {
        if ($lang != $default_locale) {
            $url = add_query_arg(array('lang' => bogo_lang_slug($lang)), $url);
        }
        return $url;
    }
    $available_languages = array_map('bogo_lang_slug', bogo_available_locales());
    $tail_slashed = '/' == substr($url, -1);
    $url = preg_replace('#^' . preg_quote($home) . '((' . implode('|', $available_languages) . ')/)?#', $home . ($lang == $default_locale ? '' : bogo_lang_slug($lang) . '/'), trailingslashit($url));
    if (!$tail_slashed) {
        $url = untrailingslashit($url);
    }
    return $url;
}
开发者ID:karthikakamalanathan,项目名称:wp-cookieLawInfo,代码行数:43,代码来源:functions.php

示例12: hm_load_custom_templates

/**
 * Load the template file of the matched rule
 *
 * @param string $template
 * @return string
 */
function hm_load_custom_templates($template)
{
    global $wp_query, $hm_rewrite_rules, $hm_current_rewrite_rule;
    // Skip 404 template includes
    if (is_404() && !isset($hm_current_rewrite_rule[3]['post_query_properties']['is_404'])) {
        return;
    }
    // Allow 404's to be overridden
    if (is_404() && isset($hm_current_rewrite_rule[3]['post_query_properties']['is_404']) && $hm_current_rewrite_rule[3]['post_query_properties']['is_404'] == false) {
        status_header('200');
    }
    // Show the correct template for the query
    if (isset($hm_current_rewrite_rule) && $hm_current_rewrite_rule[4] === $wp_query->query) {
        // Apply some post query stuff to wp_query
        if (isset($hm_current_rewrite_rule[3]['post_query_properties'])) {
            // $post_query
            foreach (wp_parse_args($hm_current_rewrite_rule[3]['post_query_properties']) as $property => $value) {
                $wp_query->{$property} = $value;
            }
        }
        if (!empty($hm_current_rewrite_rule[2])) {
            do_action('hm_load_custom_template', $hm_current_rewrite_rule[2], $hm_current_rewrite_rule);
            if (empty($hm_current_rewrite_rule[3]['disable_canonical']) && $hm_current_rewrite_rule[1]) {
                redirect_canonical();
            }
            include $hm_current_rewrite_rule[2];
            exit;
            // Allow redirect_canonical to be disabled
        } else {
            if (!empty($hm_current_rewrite_rule[3]['disable_canonical'])) {
                remove_action('template_redirect', 'redirect_canonical', 10);
            }
        }
    }
    return $template;
}
开发者ID:newsapps,项目名称:hm-core,代码行数:42,代码来源:hm-core.rewrite.php

示例13: icl_redirect_canonical_wrapper

 function icl_redirect_canonical_wrapper()
 {
     global $_icl_server_request_uri, $wp_query;
     $requested_url = !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ? 'https://' : 'http://';
     $requested_url .= $_SERVER['HTTP_HOST'];
     $requested_url .= $_icl_server_request_uri;
     redirect_canonical($requested_url);
     /*
     if($wp_query->query_vars['error'] == '404'){
         $wp_query->is_404 = true;
         $template = get_404_template();
         include($template);
         exit;
     }
     */
 }
开发者ID:bidhanbaral,项目名称:fotodep_store,代码行数:16,代码来源:sitepress.class.php

示例14: wcsp_hotfix_31_redirect_canonical

function wcsp_hotfix_31_redirect_canonical()
{
    // developed by Luke America with valuable assistance by Jonas Nordström
    // source code release 2011-03-23
    // updated 2011-04-05 (added fixes to pagination for searches, categories, & tags)
    // updated 2011-04-08 (added support for multisites that use subdirectories)
    // updated 2011-04-09 (added hotfix bypass to retain XML-RPC Support)
    // updated 2011-04-11 (added fixes for RSS feeds for categories & tags)
    // updated 2011-05-05 (official public plugin release, 1.0.0)
    global $wp_version;
    // does NOT assume bug will be fixed by next version release
    if (!is_admin() && $wp_version >= 3.1) {
        // extract current URI
        $uri = untrailingslashit($_SERVER['REQUEST_URI']);
        // bypass hotfix to retain XML-RPC Support
        $pos = strpos($uri, 'xmlrpc.php');
        if ($pos >= 1) {
            return;
        }
        // process hotfix for custom permalink CAT lookup
        $pos = strpos($uri, 'category/');
        if ($pos >= 1) {
            // prep fix for CAT rss feeds
            $feed = '';
            if (strpos($uri, 'feed')) {
                $feed = '&feed=rss2';
                $uri = substr($uri, 0, strlen($uri) - 5);
            }
            // continue CAT hotfix
            $pos = strrpos($uri, '/');
            $len = strlen($uri);
            $cat_slug = substr($uri, $pos + 1, $len - $pos - 1);
            $cat_id_object = get_category_by_slug($cat_slug);
            $cat_id = $cat_id_object->term_id;
            $url = site_url('?cat=' . $cat_id . $feed);
            header("Location: {$url}");
            exit;
        }
        // process hotfix for custom permalink TAG lookup
        $pos = strpos($uri, 'tag/');
        if ($pos >= 1) {
            // prep fix for TAG rss feeds
            $feed = '';
            if (strpos($uri, 'feed')) {
                $feed = '&feed=rss2';
                $uri = substr($uri, 0, strlen($uri) - 5);
            }
            // continue TAG hotfix
            $pos = strrpos($uri, '/');
            $len = strlen($uri);
            $tag_slug = substr($uri, $pos + 1, $len - $pos - 1);
            $url = site_url('?tag=' . $tag_slug . $feed);
            header("Location: {$url}");
            exit;
        }
        if (empty($_SERVER['QUERY_STRING'])) {
            // handle true 404's, normal processing, etc
            redirect_canonical();
            // if everything works but your home page times out
            // (as with the "Concentric/XO Communications shared hosting platform")
            // COMMENT line #151, ie,: //redirect_canonical();
            // and UNCOMMENT the next line (#158)
            // $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'];
        } else {
            // fix pagination for categories, tags, and searches
            $page_query = wcsp_hotfix_31_get_page($uri);
            if ($page_query != '') {
                $url = site_url() . $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['QUERY_STRING'];
                $url .= '&' . $page_query;
                header("Location: {$url}");
                exit;
            }
        }
    }
}
开发者ID:scarlettkuro,项目名称:diva,代码行数:75,代码来源:wcs-custom-permalinks-hotfix.php

示例15: check_canonical_url

 /**
  * If the language code is not in agreement with the language of the content
  * redirects incoming links to the proper URL to avoid duplicate content
  *
  * @since 0.9.6
  *
  * @param string $requested_url optional
  * @param bool   $do_redirect   optional, whether to perform the redirection or not
  * @return string if redirect is not performed
  */
 public function check_canonical_url($requested_url = '', $do_redirect = true)
 {
     global $wp_query, $post, $is_IIS;
     // Don't redirect in same cases as WP
     if (is_trackback() || is_search() || is_admin() || is_preview() || is_robots() || $is_IIS && !iis7_supports_permalinks()) {
         return;
     }
     // Don't redirect mysite.com/?attachment_id= to mysite.com/en/?attachment_id=
     if (1 == $this->options['force_lang'] && is_attachment() && isset($_GET['attachment_id'])) {
         return;
     }
     // If the default language code is not hidden and the static front page url contains the page name
     // the customizer lands here and the code below would redirect to the list of posts
     if (isset($_POST['wp_customize'], $_POST['customized'])) {
         return;
     }
     if (empty($requested_url)) {
         $requested_url = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
     }
     if (is_single() || is_page()) {
         if (isset($post->ID) && $this->model->is_translated_post_type($post->post_type)) {
             $language = $this->model->post->get_language((int) $post->ID);
         }
     } elseif (is_category() || is_tag() || is_tax()) {
         $obj = $wp_query->get_queried_object();
         if ($this->model->is_translated_taxonomy($obj->taxonomy)) {
             $language = $this->model->term->get_language((int) $obj->term_id);
         }
     } elseif ($wp_query->is_posts_page) {
         $obj = $wp_query->get_queried_object();
         $language = $this->model->post->get_language((int) $obj->ID);
     } elseif (is_404() && !empty($wp_query->query['page_id']) && ($id = get_query_var('page_id'))) {
         // Special case for page shortlinks when using subdomains or multiple domains
         // Needed because redirect_canonical doesn't accept to change the domain name
         $language = $this->model->post->get_language((int) $id);
     }
     if (empty($language)) {
         $language = $this->curlang;
         $redirect_url = $requested_url;
     } else {
         // First get the canonical url evaluated by WP
         // Workaround a WP bug wich removes the port for some urls and get it back at second call to redirect_canonical
         $_redirect_url = !($_redirect_url = redirect_canonical($requested_url, false)) ? $requested_url : $_redirect_url;
         $redirect_url = !($redirect_url = redirect_canonical($_redirect_url, false)) ? $_redirect_url : $redirect_url;
         // Then get the right language code in url
         $redirect_url = $this->options['force_lang'] ? $this->links_model->switch_language_in_link($redirect_url, $language) : $this->links_model->remove_language_from_link($redirect_url);
         // Works only for default permalinks
     }
     /**
      * Filters the canonical url detected by Polylang
      *
      * @since 1.6
      *
      * @param bool|string $redirect_url false or the url to redirect to
      * @param object      $language the language detected
      */
     $redirect_url = apply_filters('pll_check_canonical_url', $redirect_url, $language);
     // The language is not correctly set so let's redirect to the correct url for this object
     if ($do_redirect && $redirect_url && $requested_url != $redirect_url) {
         wp_redirect($redirect_url, 301);
         exit;
     }
     return $redirect_url;
 }
开发者ID:JSreactor,项目名称:MarketCrater.com,代码行数:74,代码来源:frontend-filters-links.php


注:本文中的redirect_canonical函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。