将具有/ en /的所有内容重定向到特定页面

时间:2016-09-28 09:28:45

标签: php wordpress .htaccess redirect

我想拥有一个多语种网站,但我还没有完成英文版本,所以我想重新定位,如果网址已经/ en /到一个带内容的特定页面"很快"。该页面为www.sitename.com/en/welcome

我在Wordpress中这样做,我不知道.htaccess那么好。这段代码实际上工作得很好,它会检查语言集并相应地重定向,但问题是在访问该网址后我想访问www.sitename.com,它仍然会将我重定向到该页面(可能是因为语言环境没有&#39 ; t改变)。

   add_action("template_redirect", 'pl_redirect');
    function pl_redirect() {
      // if is english redirect to page id 193
      if (get_locale() == 'en_US' && !is_page(193)){    
        wp_redirect( 'http://www.sitename.com/en/welcome' );
        exit;               
      }
    }

我怎样才能正确完成同样的事情? 我在.htaccess中尝试了这个但是它没有工作

Options +FollowSymLinks
RewriteEngine on
Redirect 301 ^/en/$ /en/welcome

这是通过Wordpress里面的.htaccess

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /web/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /web/index.php [L]

RewriteRule ^/en/$ /en/welcome [R=301]

</IfModule>

1 个答案:

答案 0 :(得分:1)

假设您已将所有内容安装在名为/web的目录中 - 您将需要2个.htaccess个文件:

/.htaccess (根WordPress .htaccess文件)

# BEGIN WordPress
<IfModule mod_rewrite.c>

RewriteEngine On

# the base directory
RewriteBase /web/

# this means "don't rewrite /web/index.php"
RewriteRule ^index\.php$ - [L]

# this is a router any URL that's neither a file
# nor a directory will be routed to /web/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /web/index.php [L]

</IfModule>

/web/.htaccess (您的重写)

RewriteEngine On
RewriteRule ^en/?$ /web/en/welcome [NC,L,R=302]