仅使用301重定向重定向WordPress主页

时间:2013-05-24 15:15:19

标签: php wordpress .htaccess redirect

我有一个博客,让我们说example.comexample.com/np中安装的另一个博客不是多站点,而是另一个WordPress安装。

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

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

如何实现这一目标?

8 个答案:

答案 0 :(得分:8)

由于您处于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' );

答案 1 :(得分:2)

将以下内容放入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;
    }
}

答案 2 :(得分:1)

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

RewriteRule / /np [R=301,L]

如果它已经存在,请将其放在RewriteEngine on行下面,否则将其添加为RewriteRule行上方的单独行。

此解决方案易于移除,易于维护,可移植,并且比在模板或WP代码中使用PHP更好地执行,并且能够对模板进行更新。

答案 3 :(得分: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
&#13;
&#13;
&#13;

答案 4 :(得分: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
}
?>

答案 5 :(得分:0)

您可以使用WordPress的wp_redirect功能和状态代码。在wordpress init hook上添加以下代码

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

答案 6 :(得分:0)

您可以使用is_home()is_front_page()功能重定向您的主页。

答案 7 :(得分:-1)

将它放在wordpress安装的componentWillReceiveProps()文件的最顶部:

export default class ScoreComponent extends React.Component {
  constructor(props) {
    super(props);
    // 1. create a ref to a DOM element
    this.scoreElem = React.createRef();
    ...
  }

  componentDidMount() {
    const { size } = this.props;
    const elem = this.scoreElem.current;
    // 2. add a reference to the plugin's instance, so you   
    //    can call the plugin in other lifecycle methods
    this.renderer = new VF.Renderer(elem, VF.Renderer.Backends.SVG)
    renderer.resize(size.w, size.h);
    this.context = renderer.getContext();
    ...
  }  

  componentDidUpdate (prevProps) {
    // 3. if the props effect the plugin
    // do something with the plugin
    // for example:
    const { size } = this.props;
    if(size !== prevProps.size) this.renderer.resize(size.w, size.h);
  }

  componentWillUnmount() {
    // 4. teardown:
    // run VexFlow destroy method if available
    // remove non react event listeners
    // clear timeouts and intervals
    // remove DOM nodes rendered outside of react container
    // cancel ongoing AJAX calls
    // etc...
  }

  render() {
    // 5. use only ref on the returned element, any use of properties/state might rerender the element itself.
    return (
      <div className="score" ref={this.scoreElem}></div>
    );
  }

}