Apache VirtualHosts-исключение одного файла из URL-перенаправления


В настоящее время я перенаправляю все запросы на мой сервер Apache с olddomain.com на newdomain.com - это работает нормально, но мне на самом деле нужен только один файл, чтобы все еще загружаться, как если бы он был в olddomain.com.

Вот как теперь выглядит важный бит:

<VirtualHost *:80>
ServerName olddomain.com
ServerAlias olddomain.com

Redirect / http://newdomain.com/
</VirtualHost>
Мне очень понравилось это простое решение, потому что оно делает именно то, что я хочу, и настолько просто, что даже я могу понять его! Но как сделать исключение, чтобы, когда кто-то / что-то переходит в http://olddomain.com/excludedfile.php, оно загружалось в ожидаемое доменное имя? Решение Я нашел до сих пор, кажется, для mod_rewrite установок. Если mod_rewrite-это то, что требуется, я думаю, что могу жить с этим, но я бы предпочел не делать этого...

Почему мне это нужно: я только что отправил свое приложение в Apple и в последнюю минуту решил, что мне нужно изменить доменное имя, что нарушает одну особенность приложения, потому что оно явно полагается на старое доменное имя-оно больше не видит его из-за изменений, внесенных в мой файл виртуальных хостов.

1 2

1 ответ:

Вам нужно будет использовать RedirectMatch для возможностей регулярных выражений:

RedirectMatch 301 ^((?!.*?excludedfile\.php).*)$ http://newdomain.com$1

Это изменение потребует перезапуска Apache.