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

eufgjt7s  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(168)

我有麻烦,似乎是一个简单的重定向,但我做了单独的在线测试显示有趣的结果。
要重定向的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
要重定向的URL 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

任何人都可以修复我的重定向规则,如果有什么问题吗?

ogq8wdun

ogq8wdun1#

问题出在URL解码上,/%25D0%25B0%25D0%25B2%25D1%2582%25D0%25BE%25D1%2580/解码后变成/%D0%B0%D0%B2%D1%82%D0%BE%D1%80//%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]

相关问题