#asp.net
#asp.net
Вопрос:
У меня есть живой сайт (mysite.com ) и сайт разработчика (dev.mysite.com ), который является точной копией живого сайта. Я пытаюсь перенаправить абсолютные ссылки сайта разработчика, чтобы ОСТАВАТЬСЯ на сайте разработчика. В настоящее время, конечно, нажатие на эти ссылки приводит меня на живой сайт, что не помогает мне тестировать. Я довольно новичок в asp, но после некоторых исследований я придумал кое-что для своего файла Global.asax.cs, который, как я думал, будет работать, но это не так. Вот что я пробовал:
protected void Application_BeginRequest(object sender, EventArgs e)
{
string url = HttpContext.Current.Request.Url.Host.ToString();
string endOfPath = Request.RawUrl.ToString();
if (url.Contains("mysite")) {
Context.RewritePath("dev.mysite.com" endOfPath);
}
}
Идея заключалась в том, что если вы начнете с dev.mysite.com нажатие на ссылку автоматически вставит «dev.mysite.com » на переднюю часть этой ссылки — замена того, что там было, на абсолютную ссылку или просто добавление ее к относительной ссылке. В любом случае вы останетесь на сайте разработчика.
У меня такое чувство, что я слишком усложняю это. Буду признателен за любую помощь.
Комментарии:
1. Можете ли вы изменить способ создания URL-адреса в первую очередь? Мы используем запись из настроек приложения для добавления значения в начале ссылки, вместо статического определения каких-либо ссылок?
2. Нет, все это жестко закодированные ссылки на разных страницах
3. Вы используете простой тег привязки для ссылок или управления сервером гиперссылок?
4. Это просто теги привязки.
Ответ №1:
Вы можете включить javascript ниже в конце главной страницы или добавить ClientScript.Зарегистрируйте метод startupscript в базовом классе страницы, если он у вас есть:
<script type="text/javascript">
var host = window.location.host;
var links = document.getElementsByTagName("a");
for (var index = 0; index < links.length; index ) {
if (links[index].href.search("__doPostBack") == -1 amp;amp; links[index].href.search("javascript:"))
{
links[index].href = links[index].href.replace(host, host "/dev.mysite.com");
}
}
</script>
Комментарии:
1. Если я правильно это читаю, этот скрипт будет запускаться при каждой загрузке главной страницы и переписывать URL-адреса для добавления «/dev.mysite.com «. Это правильно?
Ответ №2:
если вы используете iis 7.0 (или iis express в Visual Studio), самый простой способ — использовать модуль перезаписи url с чем-то вроде этого:
<system.webServer>
<rewrite>
<rules>
<rule name="CanonicalHostNameRule1">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^dev.mysite.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://dev.mysite.com/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
очевидно, что это должно быть включено только в web.config вашего сайта разработчика. Если у вас предыдущая версия iis, также доступен другой модуль перезаписи url. При таком подходе вам не нужно изменять какой-либо код на вашем сайте.
РЕДАКТИРОВАТЬ: позже я понял, что на самом деле это не сработает, поскольку это зависит от iis, настроившего оба входящих URL-адреса. Вы могли бы попробовать использовать другой модуль перезаписи url / aproach. подробнее о перезаписи URL смотрите здесь: http://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-module /