【发布时间】:2011-12-08 12:08:36
【问题描述】:
我在找出应该简单的东西时遇到了一些麻烦。我想 301 将目录中的所有内容重定向到新位置的单个文件。
在我的.htaccess 中,我已经尝试了以下...
Redirect 301 /myDir/ http://www.mydomain.com/myNewDir/index.html
还有这个……
Redirect 301 /myDir/ http://www.mydomain.com/myNewDir/
还有这个……
Redirect 301 /myDir http://www.mydomain.com/myNewDir
问题是每个都只是简单地映射/myDir/ 中的每个文件,并将其附加到目标 URL 的末尾。
谷歌搜索后,我看到了一些说要这样做的东西......
Redirect 301 ^/myDir(.*) http://www.mydomain.com/myNewDir
但这只是做同样的事情......它将现有文件位置映射到 URL 的末尾。
很容易在网上找到很多 ".htaccess redirect" 教程,但它们似乎只显示了诸如“一对一文件映射”或“一对一目录”之类的明显示例映射”。这些教程似乎也忽略了解释各种相关的文件指令以及如何正确使用它们。
这个特定的托管帐户是垃圾,还安装了 FrontPage 扩展。 Mod-rewrite 失败(破坏了整个站点)但 Redirect 301 行运行良好。因此,在我可以将这个新的(非 FrontPage)网站转移到更强大的托管帐户之前,我需要坚持使用 Redirect 301 单行。
如何简单地使用Redirect 301 将/myDir/ 中的所有内容 重定向到位于/myNewDir/index.html 的同一个文件? (如果可能的话,我宁愿只使用/myNewDir/)。 请详细解释您的解决方案中使用的文件指令。
更新:
以前接受的答案无效。
例子:
RedirectMatch 301 /myDir1/(.*) http://mydomain.org/newpath/myDir1/index.html
...正在给出 “尝试打开时发生了太多重定向” 错误。
这是因为 /myDir1/(.*) 匹配字符串中的 anyplace,因此如果目标 URL 包含 /myDir1/ 的任何位置,而不仅仅是根,它将被重定向到一个讨厌的循环中。
查看我自己发布的答案以获得正确的解决方案。
【问题讨论】:
标签: apache .htaccess redirect directory http-status-code-301