【问题标题】:Redirect only WordPress homepage with a 301 redirect仅使用 301 重定向重定向 WordPress 主页
【发布时间】:2013-05-20 06:03:14
【问题描述】:

我有一个博客,比如说example.com 和另一个安装在example.com/np 的博客,它不是多站点,而是不同的 WordPress 安装。

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

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

如何做到这一点?

【问题讨论】:

    标签: php wordpress .htaccess redirect


    【解决方案1】:

    您可以使用 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
    }
    ?>
    

    【讨论】:

    【解决方案2】:

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

    RewriteRule / /np [R=301,L]
    

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

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

    【讨论】:

    • 这可能是最好的答案——如果你打算让你的主题保持最新,你不必担心覆盖代码。 +1
    • 我宁愿看到 wp_redirect 使用并将重定向代码保留在子主题中。如果您使用子主题,则更新主题代码不会成为问题,这是更改主题行为的推荐方法:codex.wordpress.org/Child_Themes .htaccess 也可以通过更新永久链接结构来覆盖。
    • 意味着那里有一个RewriteBase / - 我不知道;)
    • 我设置了这条规则,首先它不起作用,其次它破坏了我的网站。我有一个 MU 安装
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 不过,您还没有回答他的问题。他想知道如何从他的主页重定向,而不仅仅是确定主页是否被请求。 :)
      【解决方案5】:

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

      【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        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

        【讨论】:

          【解决方案8】:

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

          if($_SERVER['REQUEST_URI'] == "/"){
              include('......server file directory to file you want to redirect to');
              exit;
          }
          

          【讨论】:

          • 永远不要更改 WordPress 核心代码。版本升级后可能会中断。
          猜你喜欢
          • 2018-12-29
          • 2021-04-19
          • 2017-08-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-20
          • 1970-01-01
          • 2017-10-06
          相关资源
          最近更新 更多