С Apache возможно ли сделать RewriteCond на производной от серверной переменной? - PullRequest
0 голосов
/ 19 сентября 2011

Я хочу сделать следующее переписать:

Если имя файла /files/styles/*/*/*.*, а файл /files/*.* не существует, переписать в другой домен.

Чтобы сделать это с регулярным выражением PERL, будет что-то вроде следующего:

s/\/files(\/styles\/[^\/]+?/[^\/]+?)(\/.*)$/\/files$2/

Возможно ли это сделать с помощью Apache mod_rewrite. Что-то вроде

RewriteCond %{REQUEST_FILENAME} ^files/styles.*$
RewriteCond [derivative of %{REQUEST_FILENAME}] !-f 
RewriteRule (.*)$ http://example.com/$1 [R=301,L]

1 Ответ

0 голосов
/ 19 сентября 2011

Вы можете использовать %1 для получения обратных ссылок на предыдущий RewriteCond.Вы можете попробовать что-то вроде этого:

# Is the request */files/styles/*/*/*.* 
# Set a backreference which will be the docroot (*)/files....
# Set a backreference which will be the filename (*.*).
RewriteCond %{REQUEST_FILENAME} ^(.*)/files/styles/[^/]+/[^/]+/(.+)$
# Check to see if backreference exists.
RewriteCond %1/files/%2 !-f
# Redirect.
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...