如何高效地重定向4万个相同URL结构的URL?

时间:2016-05-09 作者:Stanley Tan

40000个URL之间的结构相同。

我们如何批量重定向40000个url,而不是逐个输入每个url?

以下是url结构的示例格式:

www.website。com/School-A-Cost访问www.website。com/学校-A/成本

www.website。com/School-B-Cost至www.website。com/学校B/成本

2 个回复
SO网友:fuxia

这可以在没有WordPress的情况下解决。htaccess(或Web服务器使用的任何配置文件)。

的示例。htaccess:

RedirectMatch Permanent /School-(.*)-Cost /School-$1/Cost

SO网友:jgraup

你可以在WP中这样做,但这里没有太多关于WordPress的具体内容wp_redirect.

这段代码可以放在插件中以加速检查,也可以直接放在函数中。php。基本上,您希望在WP不得不费劲思考之前尽快运行此程序。

if ( ! function_exists( \'wpse_20160508_check_redirects\' ) ) {
    function wpse_20160508_check_redirects() {

        $request  = $_SERVER[ \'REQUEST_URI\' ];
        $redirect = \'\';

        /**
         *      http://example.com/School-A-Cost/ -> http://example.com/School-A/Cost/
         */

        if ( preg_match( "/(School-(.*))-(Cost)(\\/.*)?/", $request, $matches ) && count( $matches ) >= 3 ) {

            $path = $matches[ 1 ] . \'/\' . $matches[ 3 ];

            if ( isset( $matches[ 4 ] ) ) {
                $path .= $matches[ 4 ];
            }

            $redirect = site_url( $path );
        }

        if ( ! empty ( $redirect ) ) {
            wp_redirect( $redirect, 301 );
            exit();
        }
    }
}

// Run as soon as possible
wpse_20160508_check_redirects();
正如您所看到的,它将采用如下URL/School-A-Cost/this-is-extra?foo=bar 并检查是否与正则表达式匹配。

Array
(
    [0] => School-A-Cost/this-is-extra?foo=bar
    [1] => School-A
    [2] => A
    [3] => Cost
    [4] => /this-is-extra?foo=bar
)
从那里,您可以将这些部件组合在一起,形成一个新的位置/School-A/Cost/this-is-extra?foo=bar 您将重定向到它。

相关推荐

Redirect htaccess

我需要帮助重定向我的页面。例如,我有网站https://example.com. 我需要将内容从https://example.com 到https://example.com/blog. 这不是问题,我通过更改主页URL来做到这一点。这很有效。但现在我需要添加来自旧的重定向https://example.com 到https://xmpl.com.我想用。htaccess,但这不起作用。你们能帮帮我吗?以下是我对此的一些尝试,但两者都不起作用。RewriteEngine On RewriteRu