.htaccess - 为什么我的 htaccess 重定向会改写我的 URL?
问题描述
我正在尝试通过 htaccess 实现 301 重定向,但它们的行为不符合预期。例如,如果我按照它们在 htaccess 中出现的顺序对重定向进行抽样:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /hello/ https://www.example.com/goodbye/
Redirect 301 /hello/orange/ https://www.example.com/fruit/orange/
Redirect 301 /hello/apple/ https://www.example.com/fruit/apple/
Redirect 301 /hello/pear/ https://www.example.com/fruit/pear/
</IfModule>
不是每个页面都重定向到正确的目的地,而是重写任何包含第一行作为其 URL 一部分的 URL。因此,任何带有 /hello/ 的 URL 都会将该部分重写为 /goodbye/ - 上面的实际结果最终是:
/hello/ - > https://www.example.com/goodbye/
/hello/orange/ - > https://www.example.com/goodbye/orange/
/hello/apple/ - > https://www.example.com/goodbye/apple/
/hello/pear/ - > https://www.example.com/goodbye/pear/
我已经通过重新排序重定向确认了这种效果。如果我们将第一个重定向放在底部,那么所有重定向都可以正常工作。
我在这里想念什么?
解决方案
请查看文档,它解释了 Redirect 指令仅将 URL 路径视为前缀 -以您提供的参数开头的任何内容都将被重写。
https://httpd.apache.org/docs/2.4/mod/mod_alias.html#redirect:
然后任何以 URL-path 开头的请求都会在目标 URL 的位置向客户端返回一个重定向请求。匹配的 URL 路径之外的其他路径信息将附加到目标 URL。
推荐阅读
- javascript - 如何将新项目添加到待办事项列表?
- active-directory - AD 中的 unicodePwd 属性
- python - 在pygame中旋转一个矩形
- reactjs - 如何在 reactjs 中使用密码锁定代码
- amazon-web-services - ECS部署及匹配运行任务数
- airflow - 使用 KubernetesPodOperator 测试气流 dag
- javascript - 如何动态更改 React 组件的样式
- kibana - 上传任意 XYZ 坐标来开发我自己的非地球地图?
- javascript - 更新一个字段以进一步嵌套在文档中 - MongoDB/Node
- python - 根据值数组在数据框中过滤