htaccess rewritecondition 多种语言的多个 TLD
htaccess rewritecondition multiple TLDs with multiple languages
我正在为带有单独博客 (WordPress) 的网上商店(自定义框架)重写一些 htaccess conditions/rules。
店铺位于:shop.tld/lang/(多个 TLDs with multi-language)
该博客继续存在:blog.com
我们想将博客合并到网店结构中(没有重定向),例如:
# shop.*/{?lang}/blog/{category}/{?post} (where lang and post are optional)
我目前掌握的类别条件和规则(适用于所有 non-dutch 语言):
# shop.*/(lang != nl)/blog/{category} ==> blog.com/{lang}/category/{category}
RewriteCond %{HTTP_HOST} ^(.*)?shop\.(.*)\/((?!nl).*)\/blog$ [NC]
RewriteRule ^(.*)/blog/(.*)$ https://blog.com//category/ [L]
但是 'nl'(荷兰语 = 母语)语言不应该用于博客 URL。所以:
# shop.*/nl/blog/{category} ==> blog.com/category/{category}
RewriteCond %{HTTP_HOST} ^(.*)?shop\.(.*)\/nl\/blog$ [NC]
RewriteRule ^(.*)/blog/(.*)$ https://blog.com/category/ [L]
post 的首选 condition/rewrite 如下:
# shop.*/{lang != nl}/blog/{category}/{post} ==> blog.com/{lang}/{post}
对于荷兰语:
# shop.*/nl/blog/{category}/{post} ==> blog.com/{post}
此外,当博客上的 post/category 语言不是 'nl'/荷兰语时,post-titles 和 category-names 后缀为 -lang。例如:
nl: post-title-1
en: post-title-1-en
fr: category-name-fr
如果我们能在 shop-side 上 'clean this up' 就好了。所以所有看起来都像 'nl'-变体(SEO 明智的更好选择)
我似乎无法匹配以下 URL(正则表达式再次测试 URL-string 完美匹配,但 htaccess 不是):
类别
shop.com/nl/blog/category-1 => blog.com/category-1
shop.nl/nl/blog/category-2 => blog.com/category-2
shop.de/de/blog/category-2 => blog.com/de/category-2-de
shop.com/en/blog/category-2 => blog.com/en/category-2-en
帖子
shop.be/nl/blog/category-1/post-1 => blog.com/post-1
shop.com/en/blog/category-1/post-1 => blog.com/en/post-1-en
希望你们中的任何人都可以帮助我,或者至少将我推向正确的方向。
非常感谢,请原谅我这么长时间 post。
注意:在不久的将来,我们希望所有去 blog.com 的直接请求都重定向到 shop.tld/lang/blog(tld 取决于 user-language)。
我不知道这些当前重定向是否会妨碍默认 WordPress main-url 更改(/创建无限循环)。
对自己的回答:
正在查看 RewriteCond 中的 HTTP_HOST。
但应该改为查看 REQUEST_URI。
我正在为带有单独博客 (WordPress) 的网上商店(自定义框架)重写一些 htaccess conditions/rules。
店铺位于:shop.tld/lang/(多个 TLDs with multi-language)
该博客继续存在:blog.com
我们想将博客合并到网店结构中(没有重定向),例如:
# shop.*/{?lang}/blog/{category}/{?post} (where lang and post are optional)
我目前掌握的类别条件和规则(适用于所有 non-dutch 语言):
# shop.*/(lang != nl)/blog/{category} ==> blog.com/{lang}/category/{category}
RewriteCond %{HTTP_HOST} ^(.*)?shop\.(.*)\/((?!nl).*)\/blog$ [NC]
RewriteRule ^(.*)/blog/(.*)$ https://blog.com//category/ [L]
但是 'nl'(荷兰语 = 母语)语言不应该用于博客 URL。所以:
# shop.*/nl/blog/{category} ==> blog.com/category/{category}
RewriteCond %{HTTP_HOST} ^(.*)?shop\.(.*)\/nl\/blog$ [NC]
RewriteRule ^(.*)/blog/(.*)$ https://blog.com/category/ [L]
post 的首选 condition/rewrite 如下:
# shop.*/{lang != nl}/blog/{category}/{post} ==> blog.com/{lang}/{post}
对于荷兰语:
# shop.*/nl/blog/{category}/{post} ==> blog.com/{post}
此外,当博客上的 post/category 语言不是 'nl'/荷兰语时,post-titles 和 category-names 后缀为 -lang。例如:
nl: post-title-1
en: post-title-1-en
fr: category-name-fr
如果我们能在 shop-side 上 'clean this up' 就好了。所以所有看起来都像 'nl'-变体(SEO 明智的更好选择)
我似乎无法匹配以下 URL(正则表达式再次测试 URL-string 完美匹配,但 htaccess 不是):
类别
shop.com/nl/blog/category-1 => blog.com/category-1
shop.nl/nl/blog/category-2 => blog.com/category-2
shop.de/de/blog/category-2 => blog.com/de/category-2-de
shop.com/en/blog/category-2 => blog.com/en/category-2-en
帖子
shop.be/nl/blog/category-1/post-1 => blog.com/post-1
shop.com/en/blog/category-1/post-1 => blog.com/en/post-1-en
希望你们中的任何人都可以帮助我,或者至少将我推向正确的方向。
非常感谢,请原谅我这么长时间 post。
注意:在不久的将来,我们希望所有去 blog.com 的直接请求都重定向到 shop.tld/lang/blog(tld 取决于 user-language)。 我不知道这些当前重定向是否会妨碍默认 WordPress main-url 更改(/创建无限循环)。
对自己的回答:
正在查看 RewriteCond 中的 HTTP_HOST。
但应该改为查看 REQUEST_URI。