如何使用大写字母(大写)永久链接?

时间:2010-12-08 作者:shalu

如何创建这样的链接?

http://www.lifecellskin.us/Dev/About

“Using\\u Permalinks”部分A是大写字母。但WP会自动将大写转换为小写。

我正在尝试将仅由html创建的旧站点转换为WP平台站点。指向该网站的某些链接如下所示:

http://www.lifecellskin.us/About

该网站已被SEO索引。所以我不想失去SE排名。

感谢您阅读此文,并希望有人能够对此有所了解。。。

5 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

页面URL由slug定义,默认情况下,它们由函数格式化并小写sanitize_title_with_dashes(). 但是,此函数是通过过滤器调用的,您可以取消勾选过滤器,使其不会被调用:

remove_filter( \'sanitize_title\', \'sanitize_title_with_dashes\' );
仅仅这样做可能不是一个好主意,因为它不会删除slug中的空格和其他奇怪的东西。我建议您复制现有函数,删除将其小写的部分,然后再次连接它:

add_filter( \'sanitize_title\', \'wpse5029_sanitize_title_with_dashes\' );
function wpse5029_sanitize_title_with_dashes($title) {
    $title = strip_tags($title);
    // Preserve escaped octets.
    $title = preg_replace(\'|%([a-fA-F0-9][a-fA-F0-9])|\', \'---$1---\', $title);
    // Remove percent signs that are not part of an octet.
    $title = str_replace(\'%\', \'\', $title);
    // Restore octets.
    $title = preg_replace(\'|---([a-fA-F0-9][a-fA-F0-9])---|\', \'%$1\', $title);

    $title = remove_accents($title);
    if (seems_utf8($title)) {
        //if (function_exists(\'mb_strtolower\')) {
        //    $title = mb_strtolower($title, \'UTF-8\');
        //}
        $title = utf8_uri_encode($title, 200);
    }

    //$title = strtolower($title);
    $title = preg_replace(\'/&.+?;/\', \'\', $title); // kill entities
    $title = str_replace(\'.\', \'-\', $title);
    // Keep upper-case chars too!
    $title = preg_replace(\'/[^%a-zA-Z0-9 _-]/\', \'\', $title);
    $title = preg_replace(\'/\\s+/\', \'-\', $title);
    $title = preg_replace(\'|-+|\', \'-\', $title);
    $title = trim($title, \'-\');

    return $title;
}

SO网友:MikeSchinkel

我真的建议你坚持WordPress使用的网站使用小写URL(我认为小写URL是一种最佳实践),但你set up 301 redirects 对于所有存在此问题的URL。我发现,当你试图与一个平台抗争以阻止它做它想做的事情时,它通常会以痛苦告终,URL结构实际上已经融入到WordPress的体系结构中。

我写了另一个与您的需求非常相似的答案,该示例可以向您展示如何使用\'template_redirect\' 钩子为这些URL设置重定向此处您遇到以下问题:

SO网友:superUntitled

就我所知,搜索引擎不是区分大小写的,尽管URL是区分大小写的。我建议不要使用大写的文件格式,因为用户很难记住。

如果您真的想坚持之前的结构,那么需要在中使用regexp(正则表达式)。htaccess文件。

SO网友:Roberto

我直接在mysql表上执行此操作,效果很好:enter image description here

SO网友:Lucius

FEV 2020

自从Jan Fabry 另外,Wordpress函数有一点变化,因此,5.6版的正确代码段是:

add_filter( \'sanitize_title\', \'wpse5029_sanitize_title_with_dashes\', 10, 3 );
function wpse5029_sanitize_title_with_dashes($title, $raw_title, $context = \'display\') {

    $title = strip_tags( $raw_title );
    // Preserve escaped octets.
    $title = preg_replace( \'|%([a-fA-F0-9][a-fA-F0-9])|\', \'---$1---\', $title );
    // Remove percent signs that are not part of an octet.
    $title = str_replace( \'%\', \'\', $title );
    // Restore octets.
    $title = preg_replace( \'|---([a-fA-F0-9][a-fA-F0-9])---|\', \'%$1\', $title );

    if ( seems_utf8( $title ) ) {
        $title = utf8_uri_encode( utf8_encode($title), 200 );
    }
    if ( \'save\' === $context ) {
        // Convert &nbsp, &ndash, and &mdash to hyphens.
        $title = str_replace( array( \'%c2%a0\', \'%e2%80%93\', \'%e2%80%94\' ), \'-\', $title );
        // Convert &nbsp, &ndash, and &mdash HTML entities to hyphens.
        $title = str_replace( array( \' \', \' \', \'–\', \'–\', \'—\', \'—\' ), \'-\', $title );
        // Convert forward slash to hyphen.
        $title = str_replace( \'/\', \'-\', $title );

        // Strip these characters entirely.
        $title = str_replace(
            array(
                // Soft hyphens.
                \'%c2%ad\',
                // &iexcl and &iquest.
                \'%c2%a1\',
                \'%c2%bf\',
                // Angle quotes.
                \'%c2%ab\',
                \'%c2%bb\',
                \'%e2%80%b9\',
                \'%e2%80%ba\',
                // Curly quotes.
                \'%e2%80%98\',
                \'%e2%80%99\',
                \'%e2%80%9c\',
                \'%e2%80%9d\',
                \'%e2%80%9a\',
                \'%e2%80%9b\',
                \'%e2%80%9e\',
                \'%e2%80%9f\',
                // Bullet.
                \'%e2%80%a2\',
                // &copy, &reg, &deg, &hellip, and &trade.
                \'%c2%a9\',
                \'%c2%ae\',
                \'%c2%b0\',
                \'%e2%80%a6\',
                \'%e2%84%a2\',
                // Acute accents.
                \'%c2%b4\',
                \'%cb%8a\',
                \'%cc%81\',
                \'%cd%81\',
                // Grave accent, macron, caron.
                \'%cc%80\',
                \'%cc%84\',
                \'%cc%8c\',
            ),
            \'\',
            $title
        );

        // Convert &times to \'x\'.
        $title = str_replace( \'%c3%97\', \'x\', $title );
    }
    // Kill entities.
    $title = preg_replace( \'/&.+?;/\', \'\', $title );
    $title = str_replace( \'.\', \'-\', $title );
    
    $title = preg_replace( \'/[^%a-zA-Z0-9 _-]/\', \'\', $title );
    $title = preg_replace( \'/\\s+/\', \'-\', $title );
    $title = preg_replace( \'|-+|\', \'-\', $title );
    $title = trim( $title, \'-\' );
    
    return $title;
}
编辑器将继续显示小写URL,但它将完全按照您发送的内容进行保存,而不更改大小写。

Obs:使用这种类型的函数可能不是一个好主意,因为小写模式更方便。

结束

相关推荐