Как перенаправить с “www” URL к без “www” URL или наоборот?

вы должны использовать

double g=1.0/3;

или

double g=1/3.0;

Целочисленное деление возвращает целое число.

15
задан Diodeus - James MacFarlane 6 February 2009 в 19:45
поделиться

6 ответов

Я пошел со следующим решением в прошлом, когда я не смог изменить настройки IIS.

Любой в HTTPModule (вероятно, самый чистый), или global.asax.cs в Application_BeginRequest или в некотором BasePage вводит событие, такое как OnInit, я выполняю проверку против требуемого URL с известной строкой, которую я хочу использовать:

public class SeoUrls : IHttpModule
{
  #region IHttpModule Members

  public void Init(HttpApplication context)
  {
      context.PreRequestHandlerExecute += OnPreRequestHandlerExecute;
  }

  public void Dispose()
  {
  }

  #endregion

  private void OnPreRequestHandlerExecute(object sender, EventArgs e)
  {
    HttpContext ctx = ((HttpApplication) sender).Context;
    IHttpHandler handler = ctx.Handler;

    // Only worry about redirecting pages at this point
    // static files might be coming from a different domain
    if (handler is Page)
    {
      if (Ctx.Request.Url.Host != WebConfigurationManager.AppSettings["FullHost"])
      {
        UriBuilder uri = new UriBuilder(ctx.Request.Url);

        uri.Host = WebConfigurationManager.AppSettings["FullHost"];

        // Perform a permanent redirect - I've generally implemented this as an 
        // extension method so I can use Response.PermanentRedirect(uri)
        // but expanded here for obviousness:
        response.AddHeader("Location", uri);
        response.StatusCode = 301;
        response.StatusDescription = "Moved Permanently";
        response.End();
      }
    }
  }
}

Затем регистрируют класс в Вашем web.config:

<httpModules>
  [...]
  <add type="[Namespace.]SeoUrls, [AssemblyName], [Version=x.x.x.x, Culture=neutral, PublicKeyToken=933d439bb833333a]" name="SeoUrls"/>
</httpModules>

Этот метод работает вполне хорошо на нас.

6
ответ дан 1 December 2019 в 01:00
поделиться

Существует сообщение в блоге Stackoverflow об этом.

http://blog.stackoverflow.com/2008/06/dropping-the-www-prefix/

Заключение в кавычки Jeff:

Here’s IIS7 управляют для удаления префикса WWW из всех входящих URL. Вырежьте и вставьте этот фрагмент XML в свой web.config файл под

<system.webServer> / <rewrite> / <rules>

<rule name="Remove WWW prefix" >
<match url="(.*)" ignoreCase="true" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.domain\.com" />
</conditions>
<action type="Redirect" url="http://domain.com/{R:1}"
    redirectType="Permanent" />
</rule>

Или, если Вы предпочитаете использовать www префикс, можно сделать это также:

<rule name="Add WWW prefix" >
<match url="(.*)" ignoreCase="true" />
<conditions>
<add input="{HTTP_HOST}" pattern="^domain\.com" />
</conditions>
<action type="Redirect" url="http://www.domain.com/{R:1}"
    redirectType="Permanent" />
</rule>
27
ответ дан 1 December 2019 в 01:00
поделиться

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

Вот мой IIS7 Правило модуля перезаписи URL (здесь тип действия - это перенаправление 301, а не «перезапись»). Прекрасно работает:

<rule name="Add WWW prefix" >
  <match url="(.*)" ignoreCase="true" />
  <conditions>
   <add input="{HTTP_HOST}" negate="true" pattern="^www\.(.+)$" />
  </conditions>
  <action type="Redirect" url="http://www.{HTTP_HOST}/{R:1}" 
       appendQueryString="true" redirectType="Permanent" />
</rule>
5
ответ дан 1 December 2019 в 01:00
поделиться

Это обычно обрабатывается Вашим веб-сервером непосредственно в конфигурации. Как Вы упомянули, .htaccess файл делает это для веб-сервера Apache - он не имеет никакого отношения к PHP. Так как Вы используете ASP, это - близкая уверенность, Вашим сервером является IIS. Я знаю, что существует способ настроить это прямое с IIS, но я не знаю, каково это. Вам можно помочь в Вашем поиске путем знания, что необходимо гуглить для вещей, связанных с "перенаправлением IIS", не "перенаправлением ASP".

Тем не менее Вы CAN делает это в PHP, и почти наверняка ASP также, но у Вас должен будет быть удар любого URL в неправильном домене, вызывает сценарий ASP, который выполняет операцию перенаправления (использующий соответствующие вызовы API или путем установки заголовков непосредственно). Это требует некоторой перезаписи URL или somesuch со стороны сервера так, чтобы все URL на неправильном хосте были обработаны Вашим сценарием..., просто делают это непосредственно в сервере во-первых :)

0
ответ дан 1 December 2019 в 01:00
поделиться

Мы сделали это на IIS 6 вполне просто. Мы по существу создали второй виртуальный сервер, который ничего не имел на нем, чем пользовательские 404 страницы .aspx страница. Эта страница поймала любые запросы на WHATEVERSERVER.com/whateverpage.aspx и перенаправила к реальному серверу путем изменения URL, чтобы быть www.whateverserver.com/whateverpage.aspx.

Довольно простой установить, и имеет преимущество, что оно будет работать с любыми доменами, которые входят к нему (если у Вас есть несколько доменов, например), не имея необходимость устанавливать дополнительные правила для каждого. Таким образом, любые запросы на www.myoldserver.com/xxx будут также перенаправлены на www.whateverserver.com/xxx

В IIS 7, все это может быть сделано с компонентом записи URL, но мы предпочитаем избегать перенаправления на этом виртуальном сервере.

0
ответ дан 1 December 2019 в 01:00
поделиться

Чтобы ответить на этот вопрос, мы должны сначала вспомнить определение WWW:

World Wide Web: п. Abbr. WWW

  • Полный набор документов, находящихся на всех серверах Интернета, использующих протокол HTTP, доступных пользователям через простую систему «укажи и щелкни».
  • n: совокупность интернет-сайтов, предлагающих текстовые, графические, звуковые и анимационные ресурсы через протокол передачи гипертекста. По умолчанию все популярные веб-браузеры используют протокол HTTP. При этом программа добавляет «http: //» к запрошенному URL-адресу и автоматически подключается к HTTP-серверу через порт 80. Почему же тогда многие серверы требуют, чтобы их веб-сайты взаимодействовали через субдомен www? Почтовые серверы не требуют, чтобы вы отправляли электронные письма наrecipient@mail.domain.com.Точно так же веб-серверы должны разрешать доступ к своим страницам через основной домен, если не требуется конкретный поддомен.

Вкратце, использование поддомена www является избыточным и требует много времени для связи. Интернет, СМИ и общество будут жить без этого.

Используя ссылки в верхней части страницы, вы можете просматривать недавно проверенные домены, а также отправлять домены для проверки в реальном времени.

Веб-сервер Apache:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

Windows Server / IIS: Это невозможно.

Вы можете использовать Url Rewriter из Code Plex . С таким же синтаксисом.

RewriteCond %{HTTP_HOST} !^(www).*$ [NC]
RewriteRule ^(.*)$ http://www.%1$1 [R=301]

Источник

2
ответ дан 1 December 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: