Kategoriler
WordPress

WordPress URL yapısı nasıl değiştirilir ve eski bağlantılar nasıl yönlendirilir

WordPress kalıcı bağlantı ayarları ve eski URL’ler nasıl yenilerine yönlendirilir.

WordPress ilk kurduğunuzda standart olarak adresleri(kalıcı bağlantı yapısı) -/2021/01/ornek-yazi/- şeklinde çalıştırıyor, bir süre bu şekilde siteniz çalıştı ve arama motorları bunu indeksledi, belki kullanıcılar da paylaştı ve daha sonra kalıcı bağlantı yapısını değiştirdiniz.

WordPress URL yapısını değiştirmek için “Ayarlar>Kalıcı bağlantılar” wp-admin/options-permalink.php kısmından aşağıdaki ekranda gördüğünüz ayarı yapmanız yeterlidir.

WordPress kalıcı bağlantı ayar
WordPress kalıcı bağlantı ayar

Bu durumda eski bağlantıları yenilerine yönlendirmek her açıdan doğru olur, hem SEO hem de kullanıcıların memnuniyeti için aşağıdaki işlemleri yaptığınızda sorunu çözersiniz.

Öncelikle eğer standar yıl/ay/yazi-ismi/ yapısından /yazi-ismi/yapısına geçmiş iseniz aşağıdaki .htaccess kuralı sorunu çözer:

<IfModule mod_rewrite.c>
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME}!-f
RewriteCond %{REQUEST_FILENAME}!-d
RewriteRule ^([0-9]+)/([0-9]+)/(.\*)$ /$3 [R=301,NC,L]
</IfModule>

Eğer daha fazlasını istiyorsanız bir başka yöntem için WordPress sitenizde kullandığınız temanın function.php dosyasına aşağıdakini eklemeniz yeterli olacaktır.

add_action('template_redirect', 'maybe_redirect_404_old_permalink'); 
function maybe_redirect_404_old_permalink(){
    //404 değilse çalışmaz
    if( !is_404() ){
        return;
   }
    $url = add_query_arg( '', '' );
    $parts = explode( '/', $url );
    $parts = array_filter( $parts );
    $size = count( $parts );
    $maybe_slug = $parts[ $size ]; 
    $args = array(
        'name'        => $maybe_slug,
        'post_type'   => 'post',
        'post_status' => 'publish',
        'numberposts' => 1,
    );
    $posts = get_posts( $args );
    if( $posts &amp;&amp; ! empty( $posts[0]->ID ) ){
        $post_id = $posts[0]->ID;
        $post_url = get_permalink( $post_id );
        if( $post_url ){
            wp_safe_redirect( $post_url, 301 );
       }
   }
}

Kolay gelsin.