Относительные URL, перезапись URL и виртуальные каталоги - о боже! - PullRequest
2 голосов
/ 11 августа 2010

В настоящее время мы используем общий хост для экономии средств.У нас есть общедоступный веб-сайт и наш продукт SaaS, размещенные в виртуальных каталогах (/ app и / public) на нашем общем хосте.Мы даем тщеславные поддомены нашим клиентам (то есть client1.myproduct.com), поэтому у нас есть пара правил переписывания, чтобы все работало правильно.

Вид не относящийся к реальной проблеме, но как мы ее установилиup, если параметр HTTP_HOST не начинается с www и если поддомен не пуст, тогда мы перенаправляем в / app, в противном случае мы показываем все, что находится в корне.

Однако возникают проблемы с относительными URL-адресами.Например,

~/Scripts/jQuery.js

преобразуется в

/app/Scripts/jQuery.js

, но благодаря правилам перезаписи вы фактически переходите к сценарию с помощью

/Scripts/jQuery.js

Очевидно, я могу изменить всеURL-адреса должны быть абсолютными (т. Е. /Scripts/jQuery.js вместо ~/Scripts/jQuery.js), но это неоптимально по очевидным причинам.

Похоже, что функции, подобные ResolveUrl, используют TemplateSourceDirectory для разрешения относительных URL-адресов.Можно ли где-то перезаписать его значение?Есть ли лучший способ справиться с этим, что мне не хватает?

1 Ответ

1 голос
/ 07 апреля 2012

Бред

Сложно ответить, не зная, что вы используете для перезаписи ваших URL. В прошлом люди имели тенденцию использовать что-то определенное в web.config своего приложения, которое обрабатывалось далеко за пределами ранних действий драйвера ISAPI.

Например, ISAPIRewrite от Helicon происходит очень рано, в то время как более поздняя перезапись URL в IIS7 происходит чуть позже при обработке.

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

Тем не менее, если я не упрощаю это, вы не можете просто определить, когда к URL-адресу добавляется тильда "~", и убрать его из более раннего правила. (Отметьте это правило, чтобы перейти к остальным правилам)

Затем, когда ваше следующее правило будет обработано, оно будет делать это с относительным шаблоном URL, который начинается с "/".

Дайте мне знать, если я что-то пропустил, и если да, предоставьте информацию, о которой я упоминал выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...