我有一个博客,让我们说example.com
和example.com/np
中安装的另一个博客不是多站点,而是另一个WordPress安装。
我想要的是将example.com
主页仅重定向到example.com/np
。如果重定向是301移动永久重定向,那将是很好的。
如果我将301重定向放在WordPress头文件header.php
中,它将重定向每一页。如果我检查页面是否在家并尝试301重定向,这是不可能的,因为标题重定向应放在顶部。
如何实现这一目标?
答案 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;
答案 4 :(得分:0)
您可以使用Wordpress功能检测您是否在主页上:
<强> 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>
);
}
}