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>
我想在 ? 之后转换 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>