Reindirizza l'intero sito Web a una singola pagina


10

Devo reindirizzare un intero sito WordPress a una singola pagina WordPress. Una sorta di modalità di manutenzione, ma il reindirizzamento deve passare a una pagina WordPress pubblicata. Sfortunatamente, la pagina di manutenzione che devo mostrare deve usare altri plugin di WordPress.

Non sono a conoscenza di alcun plug-in della modalità di manutenzione che ti consente di farlo. Al massimo, ti consentono di scrivere codice HTML / CSS personalizzato.

Stavo pensando a una regola .htaccess mod_rewrite. Tuttavia, sono molto debole con mod_rewrite.

Innanzitutto, ho disabilitato i reindirizzamenti canonici .

Quindi, ho provato ad usare:

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

Tuttavia, queste regole generano loop di reindirizzamento. page_id=813è l'ID della mia pagina di manutenzione, ovviamente.

Qualcuno è a conoscenza di un plugin in modalità manutenzione, che reindirizza a una pagina pubblicata?

In alternativa, qualcuno può aiutarmi a correggere le regole mod_rewrite? Saluti extra se possiamo lasciare /wp-adminfuori le regole di reindirizzamento.

Risposte:


14

Puoi effettivamente farlo dall'interno di WordPress stesso, invece di dover trovare una soluzione .htaccess confusa e ingegnerizzata.

Possiamo agganciarci al template_redirectfiltro, che si attiva solo sul front-end (non in wp-admin). Quindi utilizziamo la is_page()funzione per verificare se stiamo visualizzando una pagina con ID 813. In caso contrario, reindirizzare a quella pagina utilizzando la wp_redirect()funzione.

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

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

Funzionerà alla grande per una modalità di manutenzione, poiché il reindirizzamento viene effettuato con l'intestazione HTTP "temporanea" 302, facendo sapere a bot e motori di ricerca che il tuo sito sarà presto attivo. Tuttavia, se si sposta permanentemente il sito, è possibile che si desideri utilizzare un'intestazione HTTP "permanente" 301 per il reindirizzamento. Puoi farlo aggiungendo un secondo parametro alla wp_redirectfunzione. Esempio:

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

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

Funziona benissimo anche per il mio scopo. Tranne l'aggiunta di un colpo di scena: il sito è "inattivo" per sempre e voglio mantenere WP attivo e funzionante che serve la pagina d'addio come home page. C'è un modo per aggiungere un'intestazione 301 a questo tipo di reindirizzamento per SEO?
Tapefreak,

@Tapefreak È possibile impostare l'intestazione HTTP come secondo parametro della wp_redirectfunzione. Esempio:wp_redirect( home_url( 'index.php?page_id=183' ), 301 );
karité

1

Ho incorporato la risposta accettata da @shea in un plug-in a un file e ho aggiunto due opzioni: reindirizzare solo utenti non amministratori e reindirizzare a un URL arbitrario.

Se interessati, non esitate a scaricare il plug-in da Github => https://github.com/Idearia/wp-redirect-website-to-url .

Opzioni

Le opzioni del plugin sono molto semplici; per il momento, sono codificati nel file del plugin, ma potrei prendere in considerazione la creazione di una pagina di opzioni se la gente lo richiede:

  • DESTINATION_URL : l'URL completo dove reindirizzare gli utenti; può essere una pagina esterna al dominio del sito Web.
  • DESTINATION_URL_ID : se l'URL di reindirizzamento è una pagina o post di WordPress, specifica qui il suo ID WordPress.
  • USER_CAPABILITY : gli utenti con questa funzionalità non verranno reindirizzati; lascia vuoto per reindirizzare tutti; il valore predefinito è "manage_options" abilitato per gli utenti amministratori.
  • REDIRECT_STATUS_CODE : stato di reindirizzamento: 302 per reindirizzamento temporaneo, 301 per reindirizzamento permanente.
  • DEBUG : se stampare le informazioni di debug in debug.log.

Informazioni aggiornate sulla pagina Github => https://github.com/Idearia/wp-redirect-website-to-url .

Si noti che il plug-in è molto semplice; gli utenti più avanzati potrebbero invece considerare uno dei tanti plugin di manutenzione disponibili nel repository dei plugin di WordPress.org.

Fammi sapere se hai qualche problema con il plugin 😊


0

Vorrei una soluzione molto più semplice. La mia ipotesi è che desideri che chiunque veda solo una pagina, senza che sia necessaria la visualizzazione di alcuna pagina WP, per qualsiasi richiesta per il tuo dominio.

Quindi, perché non creare una pagina HTML, modellarla con alcuni CSS e mettere quella pagina in un'altra cartella sulla piattaforma di hosting. Assicurati che la pagina appaia come desideri.

Quindi punta il tuo dominio su quella nuova cartella. Con la maggior parte delle piattaforme di hosting, è possibile specificare la cartella di base di un dominio. Quindi punta il tuo dominio su quella nuova cartella di base. Non sono necessari complicati reindirizzamenti htaccess, plug-in WP o filtri speciali da agganciare a WP.

In alternativa, è possibile spostare tutto il contenuto dalle cartelle principali del dominio corrente e inserire il proprio file HTML al suo posto.

I luoghi di hosting possono anche avere un "reindirizzamento globale" per qualsiasi richiesta a qualsiasi pagina del tuo dominio.

In entrambi i casi sarebbe una soluzione semplice alle tue esigenze di avere solo una pagina per l'intero dominio.

Se vuoi davvero una soluzione htaccess, usa questa:

RewriteEngine on

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

... sostituendo il tuo dominio attuale. Rende felice anche SEO.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.