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.
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 && ! 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.