У меня есть каталоги v1 и v2. Итак, пользователь может перейти к http://example.com/v1 или http://example.com/v2.
v2 имеет копию index.html из v1 и некоторые файлы css, которых никогда не было в v1.
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, он должен перейти в ErrorDocument для 404, определенный в .htaccess?)
Также под пользователем я имею в виду что угодно, ajax src тегов img и script и т. Д.
Просто используйте 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
в конфигурации для каждого каталога, просто посмотрите руководство.