【问题标题】:mod_rewrite to encode the url after the?mod_rewrite 编码后的url?
【发布时间】:2020-01-15 17:08:11
【问题描述】:

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

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

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

变身

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

这是因为谷歌将上述页面索引为

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

不存在的

【问题讨论】:

  • 这方面有什么更新吗?

标签: apache mod-rewrite url-rewriting query-string querystringparameter


【解决方案1】:

我已经到了这里,我可以用 % 但不是 %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?%1%%2 [N,E=redirect:true]
RewriteCond %{ENV:redirect} ^true$
RewriteRule (.*) $1 [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>

【讨论】:

  • 谢谢,我正在寻找完整网站的解决方案,而不是逐页更新
  • 好的。我会看看 modrewrite 看看可以在那里做些什么。
  • 网站建立在什么技术之上?
  • 服务器是 Apache,是基于 PHP 制作的自定义 CMS
  • 查看更新的答案,也许您可​​以在我尝试完成此操作时走得更远。
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 2020-06-29
  • 2011-08-13
  • 1970-01-01
  • 2019-01-19
  • 2013-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多