如何关闭 QSA? (查询字符串附加)

2023-12-31

我正在使用 Apache2 和 mod_rewrite 来隐藏我的查询字符串。这些是有问题的规则。

RewriteCond %{QUERY_STRING}                 ^query=(.*)$
RewriteRule (.*)                            /search/%1             [R=301,L]

RewriteRule ^search\/?$                     /search/?query=test    [R=301,L]

当我访问时/search (or /search/)我被正确重定向到/search/?query=test(按照最后一条规则)

从那里开始,RewriteCond and RewriteRule应该启动并将我重定向到/search/test, 正确的?据我了解%1在我的第一次RewriteRule对应于(.*) in the RewriteCond其中应包含test.

然而,实际发生的是我被重定向到/search/test/?query=test。因此,该规则有效,但由于某种原因附加了查询字符串。QSA 选项是否以某种方式/某处自动添加?

然后我陷入了重定向到的无限循环/search/test?query=test因为第一个RewriteCond and RewriteRule再一次、再一次、再一次……

我究竟做错了什么?!

Thanks!


您需要指定一个替换中的空查询 http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule防止将原始请求的查询附加到新 URL:

修改查询字符串

默认情况下,查询字符串原样传递。但是,您可以在包含查询字符串部分的替换字符串中创建 URL。只需在替换字符串中使用问号即可指示以下文本应重新插入查询字符串中。当您想要删除现有查询字符串时,只需用问号结束替换字符串。要组合新旧查询字符串,请使用 [QSA] 标志。

So:

RewriteCond %{QUERY_STRING} ^query=(.*)$
RewriteRule (.*) /search/%1? [R=301,L]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何关闭 QSA? (查询字符串附加) 的相关文章

随机推荐

  • 如何修复无法获取平台 cordova-ios@~4.4.0

    当我对最新的 Cordova 版本 7 0 1 使用 cordova platform add ios 命令时 我收到一条无法获取的消息 我正在尝试将现有项目升级到 iOS 版本 4 4 0 但为了让我安心 我尝试创建一个新项目 它也有相同
  • 使用字体很棒的星级评级由宽度定义

    目前 对于评论 我使用由带有背景类的 css 显示的星级 但我想用 Font Awesome 替换它 因为字体在高分辨率屏幕上更清晰 唯一的问题是评级是由宽度类别 以 为单位 动态定义的 我无法将代码更改为定义宽度的不同 div 类 例如
  • 删除数组的第一个项目(如从堆栈中弹出)[重复]

    这个问题在这里已经有答案了 我有通过创建的项目列表ng repeat 我也有删除按钮 单击删除按钮将逐项删除数组的最后一项 Plunker http plnkr co edit QDuklfthp2g7MMAoWxIx p preview
  • 控制器连接到指令进行验证

    您好 我想知道如何组合指令和控制器函数来验证表单 现在 我正在使用指令单独验证表单 如果有人没有填写该字段 该指令会突出显示紫色字段 并且在我的控制器中 我重复相同的验证 以查看用户是否可以继续保存数据 指令 js directive hi
  • ASP.Net Identity 强制从 SQL 注销

    我正在为我的 MVC 5 应用程序使用 ASPNET Identity 表 每天晚上我们都会对数据库进行 维护 如果我们修改该用户下的某些内容 我想停用他们的当前会话 以便他们在 Web 应用程序中执行的下一个操作会将他们踢回登录屏幕 身份
  • Peek() 真正可以看到元素流经管道中某个点时的情况

    我的问题以最简单的表达方式 根据JavaDoc https docs oracle com javase 8 docs api java util stream Stream html Peek 方法的存在主要是为了支持调试 你想要的地方
  • 模板层次结构在 magento 中的工作方式是否与子主题在 WordPress 中的工作方式相同

    我是 magento 的新手 对主题感到困惑 我购买了一个主题并安装了它 现在我需要进行一些更改 在 WordPress 中 我已经习惯了 此时我要做的是制作一个子主题 本质上是一个 css 文件 其中包含一小部分代码 以及该子主题中的任何
  • 将 JavaScript 数组中的行转换为列

    我正在研究 ReactJS 想知道是否有一种方法可以将 javascript 数组从行转换为列 study KOOS date 05 06 2005 question Standing upright answer Moderate stu
  • 无法解析 org.webkit:android-jsc:+

    每次我尝试为我的 React Native 项目运行 react native run android 或 gradlew bundleRelease 时 都会收到错误 FAILURE Build failed with an except
  • 在 Linux 和 Windows 之间共享 Eclipse 工作区

    我在我的 Windows 机器上使用 Eclipse 进行 Android 开发已经有一段时间了 但我越来越多地启动到我的 Ubuntu 分区 老实说 我喜欢这两种操作系统 因为它们各有优缺点 但我随机启动每一种操作系统 无论如何 我的硬盘
  • 检测 Android 设备方向(不是屏幕方向)

    有没有办法检测 Android 设备的当前方向 我不是在谈论屏幕方向 而是在谈论设备的物理握持方式 到目前为止我找到的所有解决方案都告诉我屏幕方向 在我的应用程序中始终是纵向 我需要知道用户是否水平握住设备 即使我没有旋转屏幕 Thanks
  • Kotlin 中函数“until”的未解析引用

    我正在尝试将 Java 项目转换为 Kotlin 我得到一个非常奇怪的编译时错误该函数until是一个 未解析的引用 这个函数怎么来的until不被认可 fun renderChildrenToRight canvas Canvas sta
  • 时区查找

    我有一个 csv 文件包含以下内容的文件 国家 地区 城市 邮政编码 地铁代码 区号 我需要找到条目的时区 我看过奥尔森数据库和地理名称 我对奥尔森数据库迷失了 找不到任何有用的东西 有没有任何网站可以访问基于国家 地区 城市的时区信息 T
  • NestedScrollView 不与 Recyclerview 一起使用

    我有这样的布局
  • AppStore 拒绝 - 性能:软件要求 prefs:root= "GraphicsServices.framework"

    Apple 拒绝了我们的应用程序并显示以下消息 准则 2 5 1 性能 软件要求 您的应用程序使用或引用以下非公共 API prefs root GraphicsServices framework App Store 不允许使用非公共 A
  • Boxplot:seaborn 中的自定义宽度

    我正在尝试在seaborn中绘制箱线图 其宽度取决于x轴值的对数 我正在创建宽度列表并将其传递给 seaborn boxplot 的 widths widths 参数 但是 我得到了 raise ValueError datashape m
  • 如何检查列表是否仅包含#t

    我在球拍和麻省理工学院方案中尝试使用以下代码 令我惊讶的是编译器抛出错误 foldr and t t t f 有没有办法使用减少 折叠方式来检查列表是否只包含 true 或 false 我知道 lambda 可以完成这项工作 但这确实让我们
  • 删除从父级继承的不透明度?

    我有一个div标签 我想取消孩子的继承权 overlay的不透明度 这是我的代码 div div
  • express.js - 如何拦截response.send()/response.json()

    假设我有多个地方可以打电话response send someData 现在我想创建一个全局拦截器来捕获所有 send方法并进行一些更改someData express js 有什么办法吗 钩子 监听器 拦截器 您可以定义一个中间件 如下所
  • 如何关闭 QSA? (查询字符串附加)

    我正在使用 Apache2 和 mod rewrite 来隐藏我的查询字符串 这些是有问题的规则 RewriteCond QUERY STRING query RewriteRule search 1 R 301 L RewriteRule