(ISAPI_Rewrite) Переписать домен при запросе определенного файла - PullRequest
0 голосов
/ 21 февраля 2011

Я пытаюсь создать условие для перезаписи URL-адреса с http://subdomain.example.com/foo/foofile.txt на http://example.com/foo/foofile.txt, если в запросе содержится foo / foofile.txt. Если бы кто-то мог указать мне правильное направление, я был бы признателен за любую помощь ...

Заранее спасибо, B

1 Ответ

2 голосов
/ 24 июля 2011

Это перенаправление определенного субдомена в основной домен для определенного файла.

Какую версию isapi_rewrite вы используете, v2 или v3?

Это предполагает v3:

RewriteCond %{HTTP:Host} ^subdomain\.(.*)$
RewriteRule ^(/foo/foofile3\.txt)$ http://%1$1 [NC,R=301]

RewriteCond проверяет хост, начинающийся с субдомена (и точки), и захватывает остальные (example.com) для удобства в правиле перезаписи. Вы также можете добавить туда конкретный example.com, но это сделает его более общим.

Затем RewriteRule ищет определенный файл /foo/foofile3.txt и захватывает его (опять же, для удобства, не повторяя его в правиле). Результат содержит% 1 для захвата в условии (example.com) и $ 1 для захвата в правиле (/foo/foofile3.txt)

NC не чувствителен к регистру, R = 301 - постоянное перенаправление.

В v3 параметры строки запроса обрабатываются автоматически, поэтому в нем сохраняются все, что находятся после файла.

Другими возможностями, делающими его немного более сложным, являются любые субдомены или шаблоны имен файлов вместо одного конкретного файла.

У меня были проблемы с кэшированием браузером моих попыток, когда я правильно понял правило. Поэтому, хотя я изменил правило, браузер кэшировал мой предыдущий редирект. Мое быстрое решение состояло в том, чтобы подсчитать имя файла для новых URL: foofile2, foofile3 (я думаю, я получил его с 3-й попытки ...). Я мог бы очистить кеш браузера каждый раз тоже; это было быстрее.

...