如何解决htaccess 使用多种语言重写多个 TLD
我正在为具有单独博客 (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'-variant(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 更改。
解决方法
回答自己:
在 RewriteCond 中查看 HTTP_HOST。
但应该查看 REQUEST_URI。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。