2016-09-28 27 views
2

我想拥有一个多语种网站,但我还没有完成英文版,所以我想重定向如果url具有/ en /到具有内容的特定页面“不久”。这页将是www.sitename.com/en/welcome将具有/ en /的所有内容重定向到指定页面

我在Wordpress中这样做,我不知道.htaccess的好。这段代码实际上工作得很好,它检查语言设置并相应地重定向,但问题是,在访问该URL后,我想要访问www.sitename.com,它仍然会将我重定向到该页面(可能由于语言环境不更改)。

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> 
+0

'^重写规则/ EN/$/EN /欢迎[R = 301,NC,L]' - 'Redirect'涉及字符串不RegExps IIRC,所以这将是'重定向301“/ en”“/ en/welcome”' – CD001

+0

谢谢,但我不能让它工作:/我已经编辑代码与Wordpress放在 –

+0

我怀疑' RewriteBase/web /'在工作中投掷扳手... – CD001

回答

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] 
相关问题