【问题标题】:Redirect a query string url to another url in .htaccess PHP?将查询字符串 url 重定向到 .htaccess PHP 中的另一个 url?
【发布时间】:2017-07-20 08:04:04
【问题描述】:

我要重定向

https://example.com/uploads/cms_files/GENERAL-TERMS-AND-CONDITIONS.pdf?docs/GENERAL_TERMS_AND_CONDITIONS.pdf

https://exmaple.com/uploads/cms_files/GENERAL-TERMS-AND-CONDITIONS.pdf

通过在核心 php 中使用 .htaccess 文件,但它没有重定向,因为我的 URL 中有 ?query 但问号后面的值没有键。

谁能帮我在 .htaccess 中重定向这个 URL 吗?

【问题讨论】:

  • 你为什么要重写它呢?如果存在可以使用该 URL 请求的对象,则可以简单地忽略查询字符串...

标签: php .htaccess redirect


【解决方案1】:

你问的直接实现是这样的:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^docs/GENERAL_TERMS_AND_CONDITIONS\.pdf$
RewriteRule ^/?uploads/cms_files/GENERAL-TERMS-AND-CONDITIONS\.pdf https://example.com/uploads/cms_files/GENERAL-TERMS-AND-CONDITIONS.pdf [R=301,QSD]

该规则同样适用于 http 服务器主机配置和动态配置文件 (.htaccess)。如果您决定使用动态配置文件,那么您必须注意完全启用它的解释(AllowOverride 指令),这样的文件可以被 http 服务器进程读取,并且它位于内部的正确位置http hosts 文件夹。

但是你为什么要重写它呢?如果存在可以使用该 URL 请求的对象,则可以简单地忽略查询字符串...


还有一个一般提示:您应该始终喜欢将此类规则放在 http 服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess 样式文件)。众所周知,这些文件容易出错,难以调试,而且它们确实会降低服务器的速度。它们仅在您无法控制主机配置(阅读:非常便宜的托管服务提供商)或您有一个依赖于编写自己的重写规则的应用程序(这显然是一个安全噩梦)的情况下作为最后一个选项被支持)。

【讨论】:

  • 谢谢,真的很有帮助
猜你喜欢
  • 2018-07-12
  • 1970-01-01
  • 2013-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-03-24
  • 1970-01-01
相关资源
最近更新 更多