将目录中未找到的所有内容重定向到另一个目录

将目录中未找到的所有内容重定向到另一个目录

我有名为 v1 和 v2 的目录。因此用户可以访问http://example.com/v1或者http://example.com/v2

v2 有来自 v1 的 index.html 的副本,以及一些 v1 中从未出现过的 css 文件。

v1 有一个包含数百张图像的图像目录。

如果用户访问 v2/images,他们就会理所当然地得到 404。我如何将 v2 目录中未找到的任何内容重定向到 v1 目录?

例如:

http://example.com/v2/someotherfile.html -> http://example.com/v1/someotherfile.html 
http://example.com/v2/images/base.jpg -> http://example.com/v1/images/base.jpg 
http://example.com/v2/index.html //does not redirect

(如果它在 v1 或 v2 中不存在,它应该转到 .htaccess 中定义的 404 的 ErrorDocument?)

另外,我所说的用户是指任何东西,ajax、img 的 src 和脚本标签等等。

答案1

只需使用 RewriteCond。它在 apache 手册中有详细描述。

<Directory /v2>
   RewriteEngine On
   # if there isnt such a file or directory
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ /v1/$1
</Directory>

这会重写(内部)请求。如果您想重定向用户(HTTP 301),请使用该[R]标志。您可能在每个目录配置中遇到问题RewriteBase,只需参阅手册即可。

相关内容