Перенаправить только домашнюю страницу WordPress с переадресацией 301

У меня есть блог, скажем, example.com и другой блог, установленный в example.com/np который не является многопользовательской, но другой установкой WordPress.

Я хочу перенаправить страницу example.com только на example.com/np . Было бы здорово, если бы это перенаправление было перенаправлено на постоянное переадресацию 301.

Если я поместил 301 переадресацию в заголовочный файл WordPress, header.php , он перенаправит каждую страницу. И если я проверю, является ли страница домашней, и попробуйте переадресацию 301, это невозможно, потому что перенаправление заголовка должно быть размещено сверху.

Как достичь этого?

Вы не хотите путаться в своих шаблонах или коде WordPress для этого, просто используйте одно правило mod_rewrite в вашем .htaccess :

 RewriteRule / /np [R=301,L] 

Поместите его ниже RewriteEngine on линию, если он уже существует, иначе добавьте его как отдельную строку над линией RewriteRule .

Это решение легко снимается, легко ремонтируется, переносится и работает лучше, чем в PHP в шаблонах или WP-коде, и сохраняет обновления для ваших шаблонов.

Поскольку вы находитесь в контексте WordPress, вы можете использовать его функции перенаправления.

Как это (в functions.php):

 function redirect_homepage() { if( ! is_home() && ! is_front_page() ) return; wp_redirect( 'http://redirect-here.com', 301 ); exit; } add_action( 'template_redirect', 'redirect_homepage' ); 

Добавьте в файл functions.php :

 add_action( 'get_header', 'so16738311_redirect', 0 ); function so16738311_redirect() { if( is_home() || is_front_page() ) { wp_redirect( home_url( '/np/' ), 301 ); exit; } } 
 Options +FollowSymLinks <IfModule mod_rewrite.c> RewriteEngine On RewriteRule (.*) http://www.Your domain/$1 [R=301,L] </IfModule> # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress 

Вы можете использовать функцию WordPress, чтобы определить, находитесь ли вы на домашней странице:

дома

http://codex.wordpress.org/Function_Reference/is_home

 <?php if ( is_home() ) { // This is a homepage - 301 Redirect header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.example.com/np"); exit; } else { // This is not a homepage } ?> 

Вы можете использовать функцию wp_redirect WordPress со статусом. добавить код Follwing в wordpress init hook

 if ( is_home() ) { wp_redirect( $location, $status ); exit; } 

Вы можете использовать функцию is_home () или is_front_page () для перенаправления домашней страницы.