AMcoder - javascript, python, java, html, php, sql

wordpress փոխել մշտական ​​հղումը 404 հաղորդագրություն - 301 վերահղում

Իմ հարցը նման է Wordpress (Postname Permalink) 404 սխալին, սակայն այն դուրս է գալիս հարցից: .

Ես ունեմ հաճախորդ, ով ունի հարյուրավոր էջեր Wordpress բլոգի լռելյայն կառուցվածքում YYYY/MM/post-name

և նրանք ցանկանում են այն տեղափոխել Permalink Structure /post-name

Այնուամենայնիվ, Google-ում և այլ որոնման համակարգերում գոյություն ունեցող հղումները պետք է վերահղվեն ճիշտ «նոր» էջին, այլ ոչ թե 404-ին կամ գլխավոր էջին:

Իմ հարցն այն է, որ Wordpress-ի վերջին տարբերակով (այս 4.6.1-ը գրելու պահին) - եթե դուք պարզապես մտնեք SETTINGS> Permalinks> Post-Name այն ճիշտ կաշխատի:

OR

Դուք դեռ պետք է փոփոխեք .htaccess ֆայլը, որպեսզի «հին էջը» վերահղվի դեպի նոր էջ:

Եթե ​​այո, ապա ո՞րն է .htaccess ֆայլի ճիշտ շարահյուսությունը, որպեսզի յուրաքանչյուր նոր հղում լինի «301 վերահղում», որն ասում է որոնման համակարգին, որ էջը մշտապես տեղափոխվել է:

Շնորհակալություն!

տես նաև Wordpress Codex-ը մշտական ​​հղման կառուցվածքում


Պատասխանները:


1

Օգտագործեք այս ձևանմուշը որպես այլընտրանք ձեր functions.php-ում

add_action('template_redirect','check404');
function check404(){

     if (is_404() ) {

        $url = $_SERVER['REQUEST_URI'];
        $url = esc_url_raw( $url );

        //FIND IF THERE IS A POST...
        $e = explode("/", $url);

        $reversed = array_reverse($e);
        $number = $reversed[0];

        $link = get_permalink($number);
        if(!empty($link)){
            wp_redirect( $link, 301 );
            exit;
        }
        else
            return;
     }

}

Սա կվերահղորդի /YYYY/MM/post-name/ -> /post-name/

15.10.2016
  • Հիանալի գաղափարներ: functions.php-ը առանձին թեմայի թղթապանակի ներսում է, ճի՞շտ է: թե՞ սա գլոբալ ֆունկցիա է։ Որտեղ եք տեղադրել այս add_action հրամանը: դուք ասում եք, ուղղակի ավելացրե՛ք վերը նշված կոդը ֆունկցիաներին, և այն կախարդական կերպով կաշխատի: Իսկ եթե դուք նաև ունենաք «կատեգորիա», այսինքն՝ կատեգորիա/գրառման անունը url-ում: 16.10.2016
  • @Viktor, եթե ձեզ դուր եկավ պատասխանը և գտնում եք, որ այն օգտակար է, մի մոռացեք կողմ քվեարկությունը: 16.10.2016
  • Պրոստի - շնորհակալություն: Ես կնշեմ այն ​​ստուգված, երբ հնարավորություն ունենամ փորձարկել այն: Կարո՞ղ եք արագ պատասխանել վերևում գտնվող իմ հարցերին: ինչպես ես անում /կատեգորիա/փոստանուն/ 17.10.2016
  • Վերին լուծումը կաշխատի նույնիսկ /category/postname և /tag/postname/ և նույնիսկ /new/kids/on/the/block/postname վրա: կարող եք նոր հարց տալ և @prosti ինձ... 17.10.2016
  • եթե մյուս պատասխանները օգտակար եք համարում, մի վախեցեք անհանգստանալ 17.10.2016

  • 2

    Դուք կարող եք դա փորձել ձեր .htaccess-ում

    RewriteEngine On
    Redirect 301 /YYYY/MM/post-name/ http://yoursite.com/post-name/
    

    Եվ դուք կարող եք ստեղծել enumerate.php անունով ֆայլ՝ ձեր բոլոր գրառումները թվարկելու համար.

    include "wp-load.php";
    
    $posts = new WP_Query('post_type=any&posts_per_page=-1&post_status=publish');
    $posts = $posts->posts;
    
    header('Content-type:text/plain');
    foreach($posts as $post) {
        switch ($post->post_type) {
            case 'revision':
            case 'nav_menu_item':
                break;
            case 'page':
                $permalink = get_page_link($post->ID);
                break;
            case 'post':
                $permalink = get_permalink($post->ID);
                break;
            case 'attachment':
                $permalink = get_attachment_link($post->ID);
                break;
            default:
                $permalink = get_post_permalink($post->ID);
                break;
        }
        echo "\n{$permalink}";
        //echo "\n{$post->post_type}\t{$permalink}\t{$post->post_title}";
    }
    

    Տեղադրեք enumerate-ը WordPress-ի հիմնական թղթապանակում և կստանաք ցուցակը, որը կարող եք օգտագործել .htaccess ֆայլի համար:

    15.10.2016

    3

    Ի վերջո, կարող եք պարզապես փորձել թարմացնել մշտական ​​հղման կառուցվածքը :), և փորձել հին URL-ը:

    Եթե ​​ինչ-որ բան սխալ է, դուք կարող եք վերադառնալ հին մշտական ​​հղման կառուցվածքին:

    15.10.2016
    Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..