Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » URL Rewrite под IIS7

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

sardvd

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
Столкнулся с проблемой использования url rewrite.
 
Что надо сделать: чтобы при попадании на домен test.domain.ru происходил rewrite (не redirect) на адрес domain.ru/cities/test. То есть, в браузере виднеется http://test.domain.ru, а страницы тянутся с http://domain.ru/cities/test.
 
Причем поддоменов планируется куча, в папке domain.ru/cities лежит скрипт, который определяет, какой был поддомен и что надо отдавать.
 
Оптределяется все прекрасно (тест для redirect):
 
<rule name="Add subdomains">
<match url=".*" />
<conditions>
    <add input="{HTTP_HOST}" pattern="http://([_0-9a-z-]+).domain.ru$" />
</conditions>
<action type="Redirect" url="http://domain.ru/cities/{C:1}" />
</rule>
 
Вопрос в том, как правильно написать <action type="Rewrite">:
 
1. Если я пишу <action type="Rewrite" url="/cities/{C:1}" />, то получаю ошибку 404. Логично, поскольку видимо он пытается ломиться на http://test.domain.ru/cities/test.
 
2. Если я пишу <action type="Rewrite" url="http://domain.ru/cities/{C:1}" />, то получаю ошибку 500.50. Видимо, rewrite не позволяет переписывать весь адрес сайта.
 
А как же быть?

Всего записей: 126 | Зарегистр. 16-12-2007 | Отправлено: 10:30 05-08-2011
z3dom



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тоже вопрос по URL Rewrite:
есть IIS, на нем крутятся два сайта host.ru и old.host.ru. Движки сайтов разные.
 
1) Задача стоит, чтобы общение с посетителями шло через host.ru. Т.е. если запрашиваетс host.ru/A - выдавалось содержимое с host.ru, а если host.ru/B - то выдавалось содержимое с old.host.ru/B,но в адресной строке у посетителя виден host.ru/
 
Эта задача достаточно легко решена. Настроено глобальное правило переопределения (rewrite) и при запросе host.ru/B идет переопределение на old.host.ru/B. Все хорошо.
 
Также обращаю внимание, что установлен флаг "Остановить обработку последующих правил".
 
 
2) Но теперь есть еще одна задача, чтобы если пользователь напрямую запрашивает old.host.ru/B, то его надо сначала отправить 301-м редиректом на host.ru/B, а потом уже ему методом переопределения выдается содержимое old.host.ru/B. У пользователя же в адресной строке видно именно host.ru/B.
 
По простой логике добавляем глобальное правило перенаправления (redirect) с old.host.ru/B на host.ru/B.
 
По моему пониманию схема должна работать очень просто:  
если пользователь запрашивает host.ru/B - срабатывает правило 1), если запрашивает old.host.ru/B - срабатывает правило 2),а затем уже правило 1).
 
Но что-то пошло не так. В результате запроса к host.ru/B возникает ошибка "циклическая переадресация", т.е. выполняется сначала правило 1) затем 2), затем 1), затем 2) и т.д. Несмотря на то, что флаг "Остановить обработку последующих правил" установлен.
 
Подскажите, как можно разрешить данную ситуацию? Возможно поменять правила местами, перенести их из глобальных в локальные правила сайта и т.п. А также возможно добавить какое-то условие, которое по какой-то  серверной переменной (вот только не знаю какой) будет определять осуществляется ли запрос к old.host.ru/B с сервера в результате работы правила переопределения (и тогда редирект не должен срабатывать), либо запрос идет от пользователя (тогда должен).
 
 

Всего записей: 10 | Зарегистр. 23-02-2008 | Отправлено: 11:14 04-02-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » URL Rewrite под IIS7


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru