Reindirizzare l'intero sito web su una singola pagina

20 dic 2012, 23:30:14
Visualizzazioni: 22.4K
Voti: 11

Ho bisogno di reindirizzare un intero sito WordPress su una singola pagina WordPress. Una sorta di modalità di manutenzione, ma il reindirizzamento deve andare su una pagina WordPress pubblicata. Sfortunatamente, la pagina di manutenzione che devo mostrare deve utilizzare altri plugin WordPress.

Non sono a conoscenza di alcun plugin per la Modalità Manutenzione che permetta di fare questo. Al massimo, ti permettono di scrivere codice HTML/CSS personalizzato.

Stavo pensando a una regola mod_rewrite nel .htaccess. Tuttavia, ho poca dimestichezza con mod_rewrite.

Prima, ho disabilitato i reindirizzamenti canonici.

Poi, ho provato a utilizzare:

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 conosce un plugin per la modalità manutenzione che reindirizza a una pagina pubblicata?

In alternativa, qualcuno può aiutarmi a correggere le regole mod_rewrite? Ancora meglio se possiamo escludere /wp-admin dalle regole di reindirizzamento.

0
Tutte le risposte alla domanda 3
2
16

Puoi effettivamente farlo direttamente all'interno di WordPress, invece di dover creare una soluzione confusa e sovraingegnerizzata con .htaccess.

Possiamo agganciarci al filtro template_redirect, che viene attivato solo sul front-end (non in wp-admin). Poi usiamo la funzione is_page() per verificare se stiamo visualizzando una pagina con ID 813. In caso contrario, reindirizziamo a quella pagina usando la funzione wp_redirect().

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

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

Questa soluzione funziona perfettamente per una modalità manutenzione, poiché il reindirizzamento viene effettuato con l'header HTTP 302 'temporaneo', informando i bot e i motori di ricerca che il sito tornerà presto online. Tuttavia, se stai spostando definitivamente il sito, potresti voler utilizzare un header HTTP 301 'permanente' per il reindirizzamento. Puoi farlo aggiungendo un secondo parametro alla funzione wp_redirect. 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;
} );
21 dic 2012 01:12:10
Commenti

Funziona perfettamente anche per il mio scopo. Aggiungendo però una variazione - il sito è "chiuso" definitivamente e voglio che WP rimanga attivo mostrando la pagina di addio come home page. C'è un modo per aggiungere un header 301 a questo tipo di reindirizzamento per la SEO?

Tapefreak Tapefreak
24 mag 2013 04:42:14

@Tapefreak Puoi impostare l'header HTTP come secondo parametro della funzione wp_redirect. Esempio: wp_redirect( home_url( 'index.php?page_id=183' ), 301 );

shea shea
24 mag 2013 06:30:39
0

Ho incorporato la risposta accettata di @shea in un plugin a file singolo e ho aggiunto due opzioni: reindirizzare solo gli utenti non amministratori e reindirizzare a un URL arbitrario.

Se interessati, sentitevi liberi di scaricare il plugin da Github => https://github.com/Idearia/wp-redirect-website-to-url.

Opzioni

Le opzioni del plugin sono molto semplici; per il momento sono hard-codificate nel file del plugin, ma potrei considerare la creazione di una pagina di opzioni se richiesto:

  • DESTINATION_URL: L'URL completo dove reindirizzare gli utenti; può essere una pagina al di fuori del dominio del sito.
  • DESTINATION_URL_ID: Se l'URL di reindirizzamento è una pagina o un post di WordPress, specificare qui il suo ID WordPress.
  • USER_CAPABILITY: Gli utenti con questa capacità non verranno reindirizzati; lasciare vuoto per reindirizzare tutti; il default è 'manage_options' che è abilitato per gli utenti amministratori.
  • REDIRECT_STATUS_CODE: Stato del reindirizzamento: 302 per reindirizzamento temporaneo, 301 per reindirizzamento permanente.
  • DEBUG: Se stampare informazioni di debug in debug.log.

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

Si prega di notare che il plugin è molto basilare; utenti più avanzati potrebbero considerare invece uno dei tanti plugin di manutenzione disponibili nel repository dei plugin di WordPress.org.

Fatemi sapere se avete problemi nel far funzionare il plugin.

11 lug 2018 20:43:07
0

Optarei per una soluzione molto più semplice. Presumo che tu voglia che gli utenti vedano solo una singola pagina - senza che sia visibile alcuna pagina di WordPress - per qualsiasi richiesta al tuo dominio.

Quindi, perché non creare una pagina HTML, stilizzarla con un po' di CSS e posizionarla in una cartella diversa sul tuo hosting? Assicurati che la pagina appaia come desideri.

Poi basta puntare il tuo dominio a quella nuova cartella. Con la maggior parte delle piattaforme di hosting, puoi specificare la cartella base di un dominio. Quindi indirizza il tuo dominio a quella nuova cartella principale. Nessun bisogno di complicati redirect htaccess, plugin WP o filtri speciali da integrare in WordPress.

In alternativa, potresti spostare tutto il contenuto fuori dalla cartella root corrente del dominio e inserire al suo posto il tuo semplice file HTML.

Molti servizi di hosting offrono anche un 'redirect globale' per qualsiasi richiesta a qualsiasi pagina del tuo dominio.

In entrambi i casi sarebbe una soluzione semplice per soddisfare la tua esigenza di avere una sola pagina per l'intero dominio.

Se preferisci davvero una soluzione htaccess, usa questa:

RewriteEngine on

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

...sostituendo con il tuo dominio effettivo. Anche i motori di ricerca saranno contenti.

25 set 2018 09:33:56