将域重定向到具有语言子文件夹的新域
Redirect domain to the new one with language subfolder
我的网站重定向有问题。几天前我买了一个 .com
域名。有两种语言:意大利语和德语。德文网站设置于 example.de
,英文版设置于 example.it
。
现在我将其更改为 .com
域:example.com
子文件夹:example.com/it/
和 example.com/it/
.
如何将所有链接从 example.it
重定向到 example.com/it/
并将 example.de
重定向到 example.com/de/
。
...和以下子文件夹。
我正在尝试
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^example\.de$ [NC]
RewriteRule ^(.*)$ https://example.com/de/ [R=301,L]
但是没有成功。
RewriteCond %{HTTP_HOST} ^example\.de$ [NC]
RewriteRule ^(.*)$ https://example.com/de/ [R=301,L]
在 RewriteRule
模式 中捕获了 URL 路径后,您在 替换 [=] 中缺少相应的反向引用56=] 字符串,所以这会将所有内容重定向到主页,即。 example.de/<url>
到 example.com/de/
- <url>
丢失了。
但是,您可以使用一个规则处理两个 TLD。由于顶级域名与子目录相同。
我假设所有三个域都解析到同一个地方。
在根 .htaccess
文件中尝试以下操作:
RewriteCond %{HTTP_HOST} ^example\.(de|it) [NC]
RewriteRule (.*) https://example.com/%1/ [R=301,L]
%1
反向引用是指从前面的 CondPattern 捕获的 TLD。 </code> 反向引用包含在 <code>RewriteRule
模式 .
中捕获的 URL 路径
此处不需要 RewriteBase
指令。
使用 302(临时)重定向进行测试以避免缓存问题。您需要在测试前清除浏览器缓存,因为错误的 301(永久)重定向将被缓存。
UPDATE#1: This is Polylang plugin for Wordpress.
在这种情况下,此重定向指令必须位于 .htaccess
文件的最顶部,位于任何现有 WordPress 指令之前,包括 # BEGIN WordPress
注释标记之前。
UPDATE#2: I also have .cz
domain and subfolder is /cs
(ISO standard)
由于 TLD 和子目录不同,您需要添加另一条规则来处理此问题。 (这可以在上述规则之前或之后,因为没有冲突。)
例如:
RewriteCond %{HTTP_HOST} ^example\.cz [NC]
RewriteRule (.*) https://example.com/cs/ [R=301,L]
我的网站重定向有问题。几天前我买了一个 .com
域名。有两种语言:意大利语和德语。德文网站设置于 example.de
,英文版设置于 example.it
。
现在我将其更改为 .com
域:example.com
子文件夹:example.com/it/
和 example.com/it/
.
如何将所有链接从 example.it
重定向到 example.com/it/
并将 example.de
重定向到 example.com/de/
。
...和以下子文件夹。
我正在尝试
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^example\.de$ [NC]
RewriteRule ^(.*)$ https://example.com/de/ [R=301,L]
但是没有成功。
RewriteCond %{HTTP_HOST} ^example\.de$ [NC] RewriteRule ^(.*)$ https://example.com/de/ [R=301,L]
在 RewriteRule
模式 中捕获了 URL 路径后,您在 替换 [=] 中缺少相应的反向引用56=] 字符串,所以这会将所有内容重定向到主页,即。 example.de/<url>
到 example.com/de/
- <url>
丢失了。
但是,您可以使用一个规则处理两个 TLD。由于顶级域名与子目录相同。
我假设所有三个域都解析到同一个地方。
在根 .htaccess
文件中尝试以下操作:
RewriteCond %{HTTP_HOST} ^example\.(de|it) [NC]
RewriteRule (.*) https://example.com/%1/ [R=301,L]
%1
反向引用是指从前面的 CondPattern 捕获的 TLD。 </code> 反向引用包含在 <code>RewriteRule
模式 .
此处不需要 RewriteBase
指令。
使用 302(临时)重定向进行测试以避免缓存问题。您需要在测试前清除浏览器缓存,因为错误的 301(永久)重定向将被缓存。
UPDATE#1: This is Polylang plugin for Wordpress.
在这种情况下,此重定向指令必须位于 .htaccess
文件的最顶部,位于任何现有 WordPress 指令之前,包括 # BEGIN WordPress
注释标记之前。
UPDATE#2: I also have
.cz
domain and subfolder is/cs
(ISO standard)
由于 TLD 和子目录不同,您需要添加另一条规则来处理此问题。 (这可以在上述规则之前或之后,因为没有冲突。)
例如:
RewriteCond %{HTTP_HOST} ^example\.cz [NC]
RewriteRule (.*) https://example.com/cs/ [R=301,L]