为什么此目录重写仅适用于顶级内容,而不适用于子目录?

为什么此目录重写仅适用于顶级内容,而不适用于子目录?

我的文件中有以下几行.htaccess

RewriteCond         "%{DOCUMENT_ROOT}/_legacy/%{REQUEST_URI}" -f
RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/_legacy/$1" [L]

/foo.html尽管这对于在 中找到很有效,但它对于在 中/_legacy/foo.html查找 却不起作用。/misc/bar.html/_legacy/misc/bar.html

奇怪的是,当我尝试访问时,/_legacy/misc/bar.html没有出现 404,而是出现 403 权限错误。/_legacy/misc/doesnt_exist.html产生 404。

我的重写显然找到了正确的文件,但是权限不知何故被搞砸了,我还没有找到解决这部分问题的方法。

这就是我尝试像这样重定向访问的动机:

不久前,我将网站主页变成了一个 Angular 应用。但我并不想删除一些旧的遗留内容,但我也不想让这些内容与 Angular 内容混杂在一起。

因此我创建了一个名为的目录_legacy,并使用重写让服务器在目录内的顶级目录中查找找不到的内容_legacy

正如我所说,这只适用于_legacy目录的根级内容。实际目录和文件权限没问题。我尝试使用FileMatchDirectoryMatch指令明确允许访问子目录,但找不到任何可行的方法。

相关内容