【问题标题】:RewriteMap Directive (permanent or temp redirect?)RewriteMap 指令(永久或临时重定向?)
【发布时间】:2017-10-03 03:57:57
【问题描述】:

这听起来像是一个愚蠢的问题,我可能会把苹果和橙子混在一起,但请多多包涵。

我正在阅读这里的文档http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#mapfunc

它说当使用外部 .txt 文件时,格式是一个简单的键/值对示例:

fromHere.html toHere.html

^ 我想确认上面会创建一个临时 302 重定向(浏览器不会主动缓存),或者我可以指示实际使用的重定向类型(301/302) htaccess 文件中的重写规则? (如果有怎么办?)

目前我在 .htaccess 文件中使用以下语法

从Here.html 重定向302 toHere.html

外部 .txt 文件中是否允许使用上述语法?

谢谢

【问题讨论】:

  • 这不是编程问题,您可以通过Server Fault 寻求帮助
  • 很多问题类似的问题,所以我想我会在这里问
  • 看看help center。 “很多类似的问题”并不能真正让题外话成为话题。
  • @pvg “.htaccess”标签有just under 60,000 questions,“mod-rewrite”标签有just under 30,000。显然,这些在这里被认为是有效的。您应该在 Meta 中解决您的顾虑。社区对此已明确表示。当我们引用规则时,“每当你遇到一个非常草率、不费吹灰之力的帖子,或者一个明显不正确且可能危险地不正确的答案时,请使用你的反对票。”其中不包括“因为您认为它离题”。
  • 事实上it specifically says不要投反对票:......如果问题重复或离题,请将其标记为版主注意。”所以你的长篇大论就是这样,而不是以任何方式基于这里规则的精神或文字。

标签: apache .htaccess redirect mod-rewrite


【解决方案1】:

RewriteMap 本身不会创建任何类型的重定向。您在RewriteRule 中使用RewriteMap,您用于RewriteRule 的格式将定义它生成的重定向类型。您正在那里查看旧的 Apache 2.0 文档。当前版本是 2.4。

这里是the current documentation。要生成 302 重定向,您可以执行以下操作:

RewriteMap examplemap "txt:/path/to/file/map.txt"
RewriteCond ${examplemap:$1} !^$
RewriteRule ^(.+)$ ${examplemap:$1} [L,R=302]

这表示在RewriteMap 中查找完整请求,如果存在,则将其作为 302 重定向到它。

【讨论】:

  • 好东西。当您看到它时答案不完整,因为我在错误完成之前提交了它,请再次检查以确保您获得所有信息。
  • 是的,实际 301、302 指令的最后一行让我感到困惑。这是原始答案的一部分。新答案也不错,谢谢
  • 是的,重要的是在它之前有RewriteCond,否则它会重定向任何东西,无论它是否在地图中,这是我最初没有添加的。您还可以在 ${examplemap:$1} 之前添加正斜杠或将其放入您的地图中。
  • 最后,您可能知道地图需要在您的 Apache 配置中,但其他代码是为 .htaccess 编写的。如果您在 Apache 配置中完成所有操作,那么您还需要使用正斜杠,否则它们将不匹配。 .htaccess 不包括匹配中的正斜杠。
猜你喜欢
  • 2010-11-26
  • 2013-10-05
  • 2016-09-08
  • 1970-01-01
  • 2017-02-09
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多