重定向包含非拉丁字符的 URL



我在看似简单的重定向方面遇到了麻烦,但我所做的单独在线测试显示了有趣的结果。

要重定向的网址 1:

https://example.com/bg/%D0%B0%D0%B2%D1%82%D0%BE%D1%80/author-name

注:%D0%B0%D0%B2%D1%82%D0%BE%D1%80是保加利亚语的作者(автор)。

重写规则:

RewriteRule ^bg/%D0%B0%D0%B2%D1%82%D0%BE%D1%80/(.*)$ https://example.com/bg/author/$1 [L,R=301]

重定向至:

https://example.com/bg/автор/author-name

相反,我希望它重定向到:

https://example.com/bg/author/author-name

在线测试: https://htaccess.madewithlove.com?share=98002622-055d-4656-9100-32bc297a42c8

要重定向的网址 2:

https://example.com/bg/%25D0%25B0%25D0%25B2%25D1%2582%25D0%25BE%25D1%2580/author-name

注意:%D0%B0%D0%B2%D1%82%D0%BE%D1%80可能也是保加利亚语的作者(автор)。

重写规则:

RewriteRule ^bg/%25D0%25B0%25D0%25B2%25D1%2582%25D0%25BE%25D1%2580/(.*)$ https://example.com/bg/author/$1 [L,R=301]

重定向至:

https://example.com/bg/%D0%B0%D0%B2%D1%82%D0%BE%D1%80/author-name

我希望它重定向到:

https://example.com/bg/author/author-name

在线测试: https://htaccess.madewithlove.com?share=66fdb0d9-f5bb-45a7-a60c-24accb924410

我试图在两个在线测试中分离 URL 1/URL 2 及其重写规则,以便于理解(我需要两个 URL 才能在生产站点上重定向)。

我所能看到的是,第一个示例中重写规则中的 URL 的一部分出现在第二个示例中的输出 URL 中,即使像我一样在单独的测试中使用也是如此。 看起来有一些我不知道的(更高功率)女巫重定向

%D0%B0%D0%B2%D1%82%D0%BE%D1%80
автор
%25D0%25B0%25D0%25B2%25D1%2582%25D0%25BE%25D1%2580

如果重定向规则有任何问题,任何人都可以修复它们吗?

问题出在 URL 解码中。 当/%25D0%25B0%25D0%25B2%25D1%2582%25D0%25BE%25D1%2580/被解码时,它变成了/%D0%B0%D0%B2%D1%82%D0%BE%D1%80/,它也被解码并最终变成/автор/

每种情况都需要 URL 重定向规则(要在没有重定向链的情况下实现成功的重定向):

RewriteRule ^bg/%25D0%25B0%25D0%25B2%25D1%2582%25D0%25BE%25D1%2580/(.*)$ https://example.com/bg/author/$1 [L,R=301]
RewriteRule ^bg/%D0%B0%D0%B2%D1%82%D0%BE%D1%80/(.*)$ https://example.com/bg/author/$1 [L,R=301]
RewriteRule ^bg/автор/(.*)$ https://example.com/bg/author/$1 [L,R=301] 

相关内容

  • 没有找到相关文章