通过 htaccess 将别名 TLD 重定向到 lang param URL
Redirect alias TLD to lang param URL via htaccess
我设法找到了解决方案但失败了,none 的其他人在此时工作。
我有兴趣将 example.fi
、example.ru
等 TLD 重定向到具有语言参数的域。例如 URL 应该变成这样:
别名 example.fi
应重定向至 example.fi/?lang=fi
,即芬兰语主页。
我尝试了不同的选项,但 none 行得通。
我感谢任何花时间回复的人。
假设:
- 您想重定向任何 URL 路径,而不仅仅是主页(即根目录 URL)。 (首页只见下方*1.)
- 初始请求中不需要其他 URL 参数。
- 如果存在冲突
lang
URL 参数,例如。 example.fi/?lang=de
然后 lang
URL 参数被替换。例如。重定向到 example.fi/?lang=fi
。
- 所有域的格式都是
example.<TLD>
(或 www.example.<TLD>
)。 IE。没有像 example.co.uk
. 这样的二级 TLD 的域
在根 .htaccess
文件的顶部附近尝试以下操作:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.([^.]+)
RewriteCond %{QUERY_STRING}@@%1 !^lang=([^.]+)@@$
RewriteRule (.*) /?lang=%1 [R=302,L]
以上重定向如下:
example.fi/
到 example.fi/?lang=fi
example.fi/foo
到 example.fi/foo?lang=fi
example.fi/foo?lang=de
到 example.fi/foo?lang=fi
example.fi/foo?lang=fi&bar=1
到 example.fi/foo?lang=fi
%1
反向引用包含请求的 主机名 的 TLD。第二个条件使用它来检查适当的 ?lang=<TLD>
查询字符串是否已存在于查询字符串中。 (这是使用 CondPattern 中的内部反向引用 </code> 实现的。)如果不是,则重定向发生到相同的 URL-路径,但 <code>?lang=<TLD>
查询字符串,覆盖之前可能在请求中的任何查询字符串。
目前这是一个 302(临时)重定向。如果这是永久性的,那么只有在您确认它按预期工作后才更改为 301(永久)重定向。
*1 仅限首页
如果您特别只想将 lang
URL 参数附加到“主页”,即。根 URL 然后将 RewriteRule
指令更改为:
:
RewriteRule ^$ /?lang=%1 [R=302,L]
我设法找到了解决方案但失败了,none 的其他人在此时工作。
我有兴趣将 example.fi
、example.ru
等 TLD 重定向到具有语言参数的域。例如 URL 应该变成这样:
别名 example.fi
应重定向至 example.fi/?lang=fi
,即芬兰语主页。
我尝试了不同的选项,但 none 行得通。
我感谢任何花时间回复的人。
假设:
- 您想重定向任何 URL 路径,而不仅仅是主页(即根目录 URL)。 (首页只见下方*1.)
- 初始请求中不需要其他 URL 参数。
- 如果存在冲突
lang
URL 参数,例如。example.fi/?lang=de
然后lang
URL 参数被替换。例如。重定向到example.fi/?lang=fi
。 - 所有域的格式都是
example.<TLD>
(或www.example.<TLD>
)。 IE。没有像example.co.uk
. 这样的二级 TLD 的域
在根 .htaccess
文件的顶部附近尝试以下操作:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.([^.]+)
RewriteCond %{QUERY_STRING}@@%1 !^lang=([^.]+)@@$
RewriteRule (.*) /?lang=%1 [R=302,L]
以上重定向如下:
example.fi/
到example.fi/?lang=fi
example.fi/foo
到example.fi/foo?lang=fi
example.fi/foo?lang=de
到example.fi/foo?lang=fi
example.fi/foo?lang=fi&bar=1
到example.fi/foo?lang=fi
%1
反向引用包含请求的 主机名 的 TLD。第二个条件使用它来检查适当的 ?lang=<TLD>
查询字符串是否已存在于查询字符串中。 (这是使用 CondPattern 中的内部反向引用 </code> 实现的。)如果不是,则重定向发生到相同的 URL-路径,但 <code>?lang=<TLD>
查询字符串,覆盖之前可能在请求中的任何查询字符串。
目前这是一个 302(临时)重定向。如果这是永久性的,那么只有在您确认它按预期工作后才更改为 301(永久)重定向。
*1 仅限首页
如果您特别只想将 lang
URL 参数附加到“主页”,即。根 URL 然后将 RewriteRule
指令更改为:
:
RewriteRule ^$ /?lang=%1 [R=302,L]