我正在尝试将所有非子域请求重定向到 www,同时保留请求 URI。
我在我的 .htaccess 文件中使用它进行重定向:
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
但问题是,当我有这样的请求时:
example.com/search/?name=läkare
它重定向到:
www.example.com/search/?name=l%25C3%25A4kare
这是不正确的,它被编码了两次。我用这个检查它:
<?php
echo rawurlencode('läkare');//outputs l%C3%A4kare
echo "\n";
echo rawurldecode('l%25C3%25A4kare');//outputs l%C3%A4kare
echo "\n";
echo rawurldecode(rawurldecode('l%25C3%25A4kare'));//outputs läkare
为什么要对其进行两次编码,我该如何防止它这样做?我对 1 编码没问题,但 2 太多了。