Answered &编辑!
我在example.com上安装了一个Wordpress。
我使用Polylang插件添加多语种系统到这个网站。我有16种语言,它被配置为法语使用example.com/fr,德语使用example.com/de等等.
我想使用韩语和日本的域名。而不是example.com/jp,我想在example.jp上获得这个网站。
我试图找到一种使用.htaccess实现这一点的方法,而不需要在子域或域上移动其他语言。
这里是我所拥有的,但是如果我转到example.jp/page/我被重定向到example.com/ja/page/,您知道如何隐藏这个重定向吗?
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?example\.jp$
RewriteRule (.*) http://example.com/ja/$1 [R=302,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress另一个信息,如果你需要,域名是使用CNAME,我是在一个WP引擎托管。关于permalinks,我将能够将它们传递到过滤器中,以清除当前的子目录链接系统。
谢谢你抽出时间!
EDIT :正如答案中所解释的,CNAME和服务器文件系统为我提供了我所需要的一切。我不需要使用.htaccess来实现我想要的目标。
发布于 2018-06-10 15:06:52
如果您已经更新了内部链接,并且example.jp指向文件系统上与example.com相同的位置(通过CNAME和适当的服务器配置更改),那么您不一定需要重写到example.com,因为example.jp访问相同的文件。无论如何,尝试重写不同的域将隐式触发外部重定向(不管您是否在RewriteRule指令中指定了D5标志)。
因此,要将其更改为对example.jp域的重写:
RewriteCond %{HTTP_HOST} ^(www.)?example.jp RewriteRule (.*) /ja/$1
(为什么在替换字符串中使用ja --这是一个错误吗?它不应该像前面在问题中提到的那样是jp吗?)
然而,这可能触发重写循环,这取决于您是否有其他指令。因此,您可能需要添加一个条件来防止这种情况发生。例如:
RewriteCond %{REQUEST_URI} !^/ja/ RewriteCond %{HTTP_HOST} ^(www.?example.jp RewriteRule (.*) /ja/$1
附加的RewriteCond指令确保所请求的URL不会(!前缀)已经以/ja/开始。
尽管这样会更有效地避免使用/ja/模式中的检查来重写RewriteRule URL。例如:
RewriteCond %{HTTP_HOST} ^(www\.)?example\.jp
RewriteRule !^ja/ /ja%{REQUEST_URI} [L]现在,只有当RewriteRule不启动/ja/,而不是处理每个请求(即。.*)。
然而,WordPress可能仍然试图规范主机名吗?即。WordPress本身可能会发出外部重定向到example.com。如果是这样的话,那么您需要在WordPress中重写它,或者使用mod_proxy实现反向代理--理想情况下,您可以访问服务器配置。
https://wordpress.stackexchange.com/questions/305780
复制相似问题