【问题标题】:htaccess rewritecondition multiple TLDs with multiple languageshtaccess rewritecondition 具有多种语言的多个 TLD
【发布时间】:2021-03-25 13:36:31
【问题描述】:

我正在为带有单独博客 (WordPress) 的网上商店(自定义框架)制定一些 htaccess 重写条件/规则。
该商店继续存在:shop.tld/lang/(具有多语言的多个 TLD)
该博客位于:blog.com

我们希望将博客合并到网店结构中(不带重定向),例如:

# shop.*/{?lang}/blog/{category}/{?post} (where lang and post are optional)

到目前为止我所掌握的类别的条件和规则(适用于所有非荷兰语):

# shop.*/(lang != nl)/blog/{category} ==> blog.com/{lang}/category/{category} 
RewriteCond %{HTTP_HOST} ^(.*)?shop\.(.*)\/((?!nl).*)\/blog$ [NC]  
RewriteRule ^(.*)/blog/(.*)$ https://blog.com/$1/category/$2 [L]

但不应将“nl”(荷兰语 = 母语)语言用于博客 URL。所以:

# shop.*/nl/blog/{category} ==> blog.com/category/{category}  
RewriteCond %{HTTP_HOST} ^(.*)?shop\.(.*)\/nl\/blog$ [NC]  
RewriteRule ^(.*)/blog/(.*)$ https://blog.com/category/$2 [L]

帖子的首选条件/重写如下:

# shop.*/{lang != nl}/blog/{category}/{post} ==> blog.com/{lang}/{post}  

对于荷兰语:

# shop.*/nl/blog/{category}/{post} ==> blog.com/{post}  

此外,当博客上的帖子/类别语言不是“nl”/荷兰语时,帖子标题和类别名称以 -lang 为后缀。例如:

nl: post-title-1  
en: post-title-1-en  
fr: category-name-fr  

如果我们能在商店里“清理”一下就好了。所以所有看起来都像“nl”变体(SEO 明智的选择)

我似乎无法匹配以下 URL(正则表达式再次测试 URL 字符串完全匹配,但 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

希望你们中的任何人都可以帮助我,或者至少将我推向正确的方向。

非常感谢和我的长篇文章的借口。

注意:在不久的将来,我们希望将所有发往 blog.com 的直接请求重定向到 shop.tld/lang/blog(tld 取决于用户语言)。 我不知道这些当前的重定向是否会妨碍默认 WordPress 主 URL 更改的方式(/创建无限循环)。

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    回答自己:
    在 RewriteCond 中查看 HTTP_HOST。
    但应该改为查看 REQUEST_URI。

    【讨论】:

      猜你喜欢
      • 2018-03-16
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      相关资源
      最近更新 更多