mod_rewrite编码后的url?

mod_rewrite to encode the url after the?

我想在 ? 之后转换 URL 的所有内容。待编码

例如,如果我在浏览器中编写此 URL:

http://www.mywebsite.com/?page=exams/product/vmware/

转换为

https://www.mywebsite.com/?page=exams%2Fproduct%2Fvmware%2F

这是因为Google将以上页面索引为

http://www.mywebsite.com/product/vmware/

不存在

我已经到了这里,我可以将 / 替换为 % 但不是 %2F,因为 RewriteRule 将 %2 读取为正则表达式组。然后即使我可以将 / 替换为 %2F modrewrite 也可能会将其读取为 / 然后创建一个无限循环。

在我使用目前的代码进行测试时

localhost:81/?page=exams/product/vmware/

变成

localhost:81/?page=exams%25product%25vmware%25

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^(.*)\/(.*)$
RewriteRule ^(.*)$ ?%1%%2 [N,E=redirect:true]
RewriteCond %{ENV:redirect} ^true$
RewriteRule (.*)  [R]
</IfModule>

我不知道如何(或是否可以这样做)使用 modrewrite 但这里是 javascript 客户端执行此操作的方法

<script>
    var p = window.location.pathname;
    var q = window.location.search;

    history.pushState('data', 'title', p+"/?"+encodeURIComponent(q.substr(1)));
</script>