как использовать перезапись, если первая перезапись не дает результата (поиск в разных местах) - PullRequest
0 голосов
/ 14 мая 2018

Я использую следующее правило перезаписи для извлечения файлов из другого каталога, и оно прекрасно работает:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^((ffmpeg|ffprobe|ffserver|ffplay)-[0-9]+-g[0-9a-z]+\.(?:7z|dmg))$  /pub/$2/snapshots/$1  [L]

Однако в /pub/$2/snapshots/$1 хранятся только 30 файлов, а более старые файлы перемещаются в другой "архив "(например, /pub/archive/$1).

Есть ли способ переписать в /pub/archive/$1, если файл больше не доступен в /pub/$2/snapshots/$1?

1 Ответ

0 голосов
/ 15 мая 2018

Никто не указал вам, что согласно документам , RewriteCond s принимают обратные ссылки на совпавший шаблон в RewriteRule. Поэтому, когда вы в настоящее время проверяете, что запрос не обычный файл, вы вместо этого проверяете предпочтительную замену - файл. Повторите это для вашей запасной замены.


Редактировать: RewriteCond в вашем комментарии не имеет смысла, первая часть должна быть предметом теста, вторая часть теста. Вы помещаете обратные ссылки на правило в теме. Очевидно, вы попробовали, попробуйте это:

RewriteCond /pub/$1/snapshots/$0 -f
RewriteRule ^(ffmpeg|ffprobe|ffserver|ffplay)-[0-9]+-g[0-9a-z]+\.(?:7z|dmg)$  /pub/$1/snapshots/$0  [END]
RewriteCond /pub/archive/$0 -f
RewriteRule ^(?:ffmpeg|ffprobe|ffserver|ffplay)-[0-9]+-g[0-9a-z]+\.(?:7z|dmg)$  /pub/archive/$0  [END]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...