3

我有一个博客,可以说example.com,另一个博客example.com/np不是多站点,而是不同的 WordPress 安装。

我想要的是将example.com主页仅重定向到example.com/np. 如果该重定向是 301 永久移动重定向,那就太好了。

如果我将 301 重定向放在 WordPress 头文件中header.php,它将重定向每个页面。如果我检查页面是否是主页并尝试 301 重定向,这是不可能的,因为标题重定向应该放在顶部。

如何做到这一点?

4

8 回答 8

15

由于您处于 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' );
于 2013-05-24T16:15:07.073 回答
4

将以下内容放入您的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;
    }
}
于 2013-05-24T15:22:52.703 回答
3

您不想为此混淆您的 Wordpress 模板或代码,只需在您的 : 中使用单个 mod_rewrite 规则.htaccess

RewriteRule / /np [R=301,L]

如果它已经存在,则将其放在该RewriteEngine on行下方,否则将其作为单独的一行添加到该行上方RewriteRule

此解决方案易于移除、易于维护、可移植,并且比在模板或 WP 代码中使用 PHP 执行的性能更好,并且可以在模板更新后继续存在。

于 2013-05-24T15:20:04.390 回答
1

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

于 2015-01-24T21:28:05.710 回答
1

您可以使用带有状态码的 WordPress 的wp_redirect功能。在 wordpress 初始化钩子上添加以下代码

if ( is_home() ) {
    wp_redirect( $location, $status );
    exit;
}
于 2013-05-24T15:22:08.223 回答
0

您可以使用 Wordpress 功能来检测您是否在主页上:

is_home

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
}
?>
于 2013-05-24T15:18:05.617 回答
0

您可以使用is_home()is_front_page()函数来重定向您的主页。

于 2013-05-24T15:22:47.463 回答
-2

index.php只需将其放在您的 wordpress 安装文件的最顶部:

if($_SERVER['REQUEST_URI'] == "/"){
    include('......server file directory to file you want to redirect to');
    exit;
}
于 2018-05-08T21:58:27.437 回答