Tüm web sitesini tek bir sayfaya yönlendirin


10

Tüm bir WordPress sitesini tek bir WordPress sayfasına yönlendirmem gerekiyor. Bir tür bakım modu, ancak yönlendirmenin yayınlanmış bir WordPress sayfasına gitmesi gerekiyor. Ne yazık ki, göstermem gereken bakım sayfasının diğer WordPress eklentilerini kullanması gerekiyor.

Bunu yapmanıza izin veren herhangi bir Bakım Modu eklentisinin farkında değilim. En fazla özel HTML / CSS kodu yazmanıza izin verir.

Bir .htaccess mod_rewrite kuralı düşünüyordum. Ancak, mod_rewrite ile çok zayıfım.

İlk olarak, kanonik yönlendirmeleri devre dışı bıraktım .

Sonra, kullanmaya çalıştım:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php?page_id=813$
RewriteRule ^(.*)$ /index.php?page_id=813 [R=307,L]

Ancak, bu kurallar yönlendirme döngüleri oluşturur. page_id=813tabii ki bakım sayfamın kimliği.

Yayınlanmış bir sayfaya yönlendirme yapan bir bakım modu eklentisinin farkında olan var mı?

Alternatif olarak, birisi mod_rewrite kurallarını düzeltmeme yardımcı olabilir mi? /wp-adminYönlendirme kurallarının dışında bırakabilirsek ekstra alkışlar .

Yanıtlar:


14

Bunu, kafa karıştırıcı ve yapılandırılmış bir .htaccess düzeltmesi bulmak yerine WordPress'in içinden yapabilirsiniz.

template_redirectSadece ön uçtan çıkan filtreye bağlanabiliriz (wp-admin'de değil). Daha sonra is_page()işlevi, 813 kimliğine sahip bir sayfa görüntüleyip görüntülemediğimizi kontrol etmek için kullanırız . Değilse, wp_redirect()işlevi kullanarak o sayfaya yönlendirin .

add_action( 'template_redirect', function() {
    if ( is_page( 813 ) ) {
        return;
    }

    wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ) );
    exit;
} );

Yönlendirme, 302 'geçici' HTTP üstbilgisi ile yapıldığından, bir bakım modu için harika çalışır, böylece botlara ve arama motorlarına sitenizin yakında hazır olacağını bildirir. Ancak, siteyi kalıcı olarak taşıyorsanız, yönlendirme için 301 "kalıcı" bir HTTP başlığı kullanmak isteyebilirsiniz. Bunu wp_redirectişleve ikinci bir parametre ekleyerek yapabilirsiniz . Misal:

add_action( 'template_redirect', function() {
    if ( is_page( 813 ) ) {
        return;
    }

    wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ), 301 );
    exit;
} );

Bu benim amacım için de harika çalışıyor. Bir bükülme eklemenin dışında - site iyi için "aşağı" ve WP'yi yukarıda tutmak ve ana sayfa olarak veda sayfasını sunmaya devam etmek istiyorum. SEO için bu tür yönlendirmeye 301 üstbilgisi eklemenin bir yolu var mı?
Tapefreak

@Tapefreak HTTP üstbilgisini wp_redirectişlevin ikinci parametresi olarak ayarlayabilirsiniz . Örnek:wp_redirect( home_url( 'index.php?page_id=183' ), 301 );
shea

1

@Shea tarafından kabul edilen yanıtı bir dosya eklentisine ekledim ve iki seçenek ekledim: yalnızca yönetici olmayan kullanıcıları yeniden yönlendirin ve rastgele bir URL'ye yönlendirin.

İlgileniyorsanız, lütfen eklentiyi Github => https://github.com/Idearia/wp-redirect-website-to-url adresinden indirebilirsiniz .

Seçenekler

Eklenti seçenekleri çok basit; şimdilik, eklenti dosyasında sabit kodlanmışlar, ancak insanlar isterse bir seçenek sayfası oluşturmayı düşünebilirim:

  • DESTINATION_URL : Kullanıcıların yönlendirileceği tam URL; web sitesi alan adının dışındaki bir sayfa olabilir.
  • DESTINATION_URL_ID : Yönlendirme URL'si bir WordPress sayfası veya yayınıysa, burada WordPress kimliğini belirtin.
  • USER_CAPABILITY : Bu özelliğe sahip kullanıcılar yeniden yönlendirilmez; herkesi yönlendirmek için boş bırakın; varsayılan, yönetici kullanıcılar için etkinleştirilen 'manage_options' şeklindedir.
  • REDIRECT_STATUS_CODE : Yönlendirme durumu: geçici yönlendirme için 302, kalıcı yönlendirme için 301.
  • HATA AYIKLAMA : Hata ayıklama bilgilerinin debug.log dosyasına yazdırılıp yazdırılmayacağı.

Github sayfasındaki güncel bilgiler => https://github.com/Idearia/wp-redirect-website-to-url .

Eklentinin çok basit olduğunu lütfen unutmayın; daha gelişmiş kullanıcılar bunun yerine WordPress.org eklenti deposunda bulunan birçok bakım eklentisinden birini düşünebilir.

Eklentiyi çalıştırırken herhangi bir sorun yaşarsanız bana bildirin 😊


0

Çok daha basit bir çözüm ararım. Benim varsayımım, alan adınıza yönelik herhangi bir istek için yalnızca bir sayfa görmenizi istediğinizdir - herhangi bir WP sayfasının görünmesine gerek yoktur.

Öyleyse, neden bir HTML sayfası oluşturmuyorsunuz, bazı CSS'lerle stil yapmıyorsunuz ve bu sayfayı barındırma platformunuzdaki başka bir klasöre koymuyorsunuz. Sayfanın istediğiniz gibi göründüğünden emin olun.

Ardından alan adınızı bu yeni klasöre yönlendirin. Çoğu barındırma platformunda, bir etki alanının temel klasörünü belirleyebilirsiniz. Alan adınızı bu yeni temel klasöre yönlendirin. WP'ye bağlanmak için karmaşık htaccess yönlendirmelerine veya WP eklentilerine veya özel filtrelere gerek yoktur.

Veya, tüm içeriği geçerli etki alanı kök klasör (ler) inden taşıyabilir ve basit HTML dosyanızı yerine koyabilirsiniz.

Yer barındıran yerler, alan adınızdaki herhangi bir sayfaya yapılan herhangi bir istek için 'genel yönlendirme' de içerebilir.

Her iki şekilde de alan adınızın tamamı için yalnızca bir sayfa olması gereksinimlerinize basit bir çözüm olacaktır.

Gerçekten bir htaccess çözümü istiyorsanız, bunu kullanın:

RewriteEngine on

RewriteRule ^(.*)$ http://www.example.com/  [R=permanent,L]

.. gerçek alan adınız ile değiştirme. SEO da mutlu ediyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.