我有名为 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
,只需参阅手册即可。