У меня есть блог, скажем, 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, чтобы определить, находитесь ли вы на домашней странице:
дома
<?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 () для перенаправления домашней страницы.