我在看似简单的重定向方面遇到了麻烦,但我所做的单独在线测试显示了有趣的结果。
要重定向的网址 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]