将301从目录重定向到单个文件

Spa*_*rky 5 apache directory .htaccess redirect http-status-code-301

我在搞清楚应该简单的事情时遇到了一些麻烦.我想301将目录中的所有内容重定向到新位置中的单个文件.

在我.htaccess,我已经尝试过以下......

Redirect 301 /myDir/ http://www.mydomain.com/myNewDir/index.html
Run Code Online (Sandbox Code Playgroud)

还有这个...

Redirect 301 /myDir/ http://www.mydomain.com/myNewDir/
Run Code Online (Sandbox Code Playgroud)

还有这个...

Redirect 301 /myDir http://www.mydomain.com/myNewDir
Run Code Online (Sandbox Code Playgroud)

问题是,每个这些被简单地映射内的每个文件/myDir/,并且将其附加到目标URL的结尾.

在谷歌搜索之后,我看到了一些据说要做的事......

Redirect 301 ^/myDir(.*) http://www.mydomain.com/myNewDir
Run Code Online (Sandbox Code Playgroud)

但这只是做同样的事情......它将现有文件位置映射到URL的末尾.

很容易在网上找到很多".htaccess重定向"教程,但它们似乎只显示了诸如"一对一文件映射"或"一对一目录映射"这些明显的例子.这些教程似乎也忽略了解释各种相关文件指令以及如何正确使用它们.

这个特殊的主机帐户是垃圾,也安装了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
Run Code Online (Sandbox Code Playgroud)

...正在给出"尝试打开时出现太多重定向"错误.

这是因为/myDir1/(.*)是匹配任何地方在字符串中,所以如果目标URL中包含/myDir1/的任何地方,而不仅仅是根,它会被重定向到一个讨厌的循环.

请参阅我自己发布的答案以获得正确的解

Spa*_*rky 12

我在一个旧项目中找到了答案.

Redirect 301这是错的.我真的很想要RedirectMatch 301.

RedirectMatch 301 ^/myDir/(.*) http://www.example.com/myNewDir/
Run Code Online (Sandbox Code Playgroud)

说明(S):

http://httpd.apache.org/docs/1.3/mod/mod_alias.html#redirectmatch

"这个指令相当于Redirect,但使用标准的正则表达式,而不是简单的前缀匹配."

http://www.zytrax.com/tech/web/regex.htm

"在^方括号外(抑扬或插入符号)意味着只有在目标字符串的开头看,例如,^Win将无法找到 Windows在STRING1但^Moz会发现Mozilla."

和...

"在.(期)是指在这个位置上的任何字符(S),例如, ton.会发现tons,tonetonneau而不是wanton因为它没有后面的字符."

和...

*(星号或星)前面的字符0次或多次匹配时,例如,tre*会发现tree(2次)和tread(1次)和trough(0次).