Intereting Posts

Перенаправить весь сайт на одну страницу

Мне нужно перенаправить весь сайт WordPress на одну страницу WordPress. Вид режима обслуживания, но перенаправление должно перейти на опубликованную страницу WordPress. К сожалению, страница обслуживания, которую мне нужно показать, должна использовать другие плагины WordPress.

Я не знаю о плагине Maintenance Mode, который позволяет вам это делать. В лучшем случае они позволяют писать собственный код HTML / CSS.

Я думал о правиле mod_rewrite .htaccess. Тем не менее, я очень слаб с mod_rewrite.

Во-первых, я отключил канонические переадресации .

Затем я попытался использовать:

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

Однако эти правила генерируют петли перенаправления. page_id=813 – это идентификатор моей страницы обслуживания, конечно.

Кто-нибудь знает о плагине режима обслуживания, который перенаправляется на опубликованную страницу?

В качестве альтернативы, может кто-нибудь помочь мне исправить правила mod_rewrite? Дополнительные приветствия, если мы можем оставить /wp-admin из правил перенаправления.

Solutions Collecting From Web of "Перенаправить весь сайт на одну страницу"

Вам не нужен .htaccess, чтобы сделать это вообще. Исправление .htaccess будет раздутым и перегруженным.

Вместо этого мы можем подключиться к фильтру template_redirect , который запускается только в интерфейсе (а не в wp-admin). Затем мы используем is_page() чтобы проверить, просматриваем ли мы страницу с идентификатором 813. Если нет, перенаправляйте эту страницу с помощью функции wp_redirect() .

 add_action( 'template_redirect', 'wpse_76802_maintance_mode' ); function wpse_76802_maintance_mode() { if ( ! is_page( 813 ) ) { wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ) ); exit; } } 

Это будет отлично работать для режима обслуживания, поскольку перенаправление выполняется с 302 «временным» HTTP-заголовком, позволяя ботам и поисковым системам знать, что ваш сайт скоро появится. Однако, если вы постоянно перемещаете сайт, вы можете использовать 301 «постоянный» HTTP-заголовок для перенаправления. Вы можете сделать это, добавив второй параметр в функцию wp_redirect . Пример:

 add_action( 'template_redirect', 'wpse_76802_goodbye_redirect' ); function wpse_76802_goodbye_redirect() { if ( ! is_page( 813 ) ) { wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ), 301 ) ); exit; } }