Reindirizzare l'intero sito web su una singola pagina
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.

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;
} );

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?

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.

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.
