linux - .htaccess RewriteRule 将 http 重定向到 https 搞乱了 URL 中的 % 转义参数

标签 linux apache .htaccess ubuntu https

我在我的 .htaccess 文件中使用类似于以下内容的内容将所有 http 请求重定向到 https:

RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

这是可行的,除了使用转义参数传递 URL 的情况,例如:

http://www.example.com/download.php?go=app%20name

重定向时,再次被错误地转义为:

https://www.example.com/download.php?go=app%2520name

我该如何解决这个问题?

最佳答案

使用NE or noescape flag在你的规则中:

RewriteEngine on

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

确保在测试更改之前清除浏览器缓存。

关于linux - .htaccess RewriteRule 将 http 重定向到 https 搞乱了 URL 中的 % 转义参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46629602/

相关文章:

java - 如何使用apache配置库获取属性值和标签值

regex - 涉及一个文件夹到另一个文件夹的 htaccess 重写规则的模式匹配

mysql - 将 linux 命令的输出导入 MySQL 表

python - 如何查看安装了哪个版本的nltk、scikit learn?

ruby-on-rails - 防止 Rails 在执行 ssh 时挂起?

node.js - 如何设置 Apache ProxyPass 以保留 Express 路由

linux - sudoers NOPASSWD : sudo: no tty present and no askpass program specified

php - 在 Docker 上加载自定义 php.ini(镜像 : php:8. 1.2-apache)

.htaccess - 简单的 Youtube + Htaccess 重定向

php - .htaccess 301 使用 php get 查询重定向(旧 url 到新更新)