Answered & edited !
我在上安装了一个Wordpress
example.com.
我使用Polylang插件将多语言系统添加到此网站。我有16种语言,配置为使用example.com/fr 对于法语,example.com/de 对于德语等。。。
我想使用韩语和日本的域名。而不是example.com/jp, 我想上这个网站example.jp.
我在想办法解决这个问题。htaccess,无需移动子域或域上的其他语言。
这是我所拥有的,但如果我example.jp/page/ 我被重定向到example.com/ja/page/, 您知道隐藏此重定向的方法吗?
# BEGIN WordPress
<IfModule mod_rewrite.c>
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]
</IfModule>
# END WordPress
如果您需要其他信息,该域正在使用CNAME,我正在使用WP引擎托管。关于permalinks,我可以将它们传递到过滤器中,以清除当前子目录链接系统。
谢谢你的时间!
EDIT : 正如回答中所解释的,CNAME和服务器文件系统为我提供了所需的一切。我不需要使用。htaccess以实现我的目标。
最合适的回答,由SO网友:DocRoot 整理而成
如果您已经更新了内部链接example.jp
指向文件系统上与example.com
(通过CNAME和相应的服务器配置更改)那么您不必重写example.com
, 自从example.jp
访问相同的文件。尝试重写到其他域将隐式触发外部重定向(无论您是否指定R
上的标志RewriteRule
指令)。
所以,要在example.jp
域:
RewriteCond %{HTTP_HOST} ^(www\\.)?example\\.jp
RewriteRule (.*) /ja/$1 [L]
(为什么使用
ja
在替换字符串中-这是打字错误吗?难道不是吗
jp
如您之前的问题所述?)
但是,这可能会触发重写循环,具体取决于您是否有其他指令。因此,您可能需要添加一个条件来防止出现这种情况。例如:
RewriteCond %{REQUEST_URI} !^/ja/
RewriteCond %{HTTP_HOST} ^(www\\.)?example\\.jp
RewriteRule (.*) /ja/$1 [L]
额外的
RewriteCond
指令确保请求的URL不会(
!
前缀)已以开头
/ja/
.
虽然避免重写会更有效/ja/
签入的URLRewriteRule
模式。例如:
RewriteCond %{HTTP_HOST} ^(www\\.)?example\\.jp
RewriteRule !^ja/ /ja%{REQUEST_URI} [L]
现在
RewriteRule
仅在URL未启动时处理
/ja/
, 而不是处理每个请求(即。
.*
).
但是,WordPress可能仍然会尝试规范化主机名?例如,WordPress本身可能会发出一个外部重定向到example.com
. 如果是这种情况,那么您需要在WordPress中覆盖此选项,或者使用mod\\u proxy实现一个反向代理,理想情况下,您可以访问服务器配置。