【问题标题】:htaccess rewrite/redirect folderhtaccess 重写/重定向文件夹
【发布时间】:2015-09-11 13:35:06
【问题描述】:

我想重定向以下内容:

http://www.mywebsite.com/monkey
should become
http://www.mywebsite.com/chimpansee

http://www.mywebsite.com/monkey/index.html 
should become 
http://www.mywebsite.com/chimpansee/index.html

以下代码适用于第二种情况(使用 index.html)。如何让它适用于这两种情况?

RewriteCond %{THE_REQUEST} ^GET\ /monkey/
RewriteRule ^monkey/(.*) /chimpansee/$1 [L,R=301]

【问题讨论】:

  • “以下代码有效” - 该代码不会做任何事情,它只是重定向到自身。您是否只想按照您的代码 sn-p 的建议重定向 index.htmleverything
  • 您的 .htaccess 中有更多规则吗?

标签: .htaccess mod-rewrite redirect


【解决方案1】:

这条规则应该涵盖这一点-

RewriteRule ^monkey(/.*)?$    /chimpansee$1    [R=301,L]

请注意,默认情况下 Redirect 也会执行此类操作,例如

Redirect  301   /monkey/    /chimpansee/

并且避免使用 mod_rewrite,这可能更可取,具体取决于该指令的位置(即 conf 或 htaccess)。

要将其限制为仅 GET 请求,例如您的代码,您可以使用 REQUEST_METHOD:

RewriteCond    %{REQUEST_METHOD}     ^GET$
RewriteRule    ^monkey(/.*)?$        /chimpansee$1    [R=301,L]

请参阅http://www.askapache.com/htaccess/mod_rewrite-variables-cheatsheet.html 以获取可在重写条件中使用的环境变量的方便列表。

【讨论】:

  • 我认为您的意思是Redirect,而不是RedirectMatch。使用RedirectMatch,您仍然需要捕获模式并在目标 URL 中使用反向引用,因为它不是前缀匹配。 (我认为 OP 对 THE_REQUESTGET 的引用只是防止重定向循环的不必要尝试——可能是错误的吗?)
  • 谢谢@jeremy-jones。现在我有一个更难的。如何将“monkey”重定向到“_monkey_folder”?它还不断替换目标字符串的猴子部分。
  • 看起来它现在可以工作了,我认为我之前的规则卡在了浏览器缓存中。
猜你喜欢
  • 2014-08-04
  • 1970-01-01
  • 2014-02-19
  • 2013-10-08
  • 1970-01-01
  • 2021-08-05
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多