Назад | Перейти на главную страницу

Как 301 перенаправить отдельный файл или каталог на общий план хостинга Windows GoDaddy?

Я видел несколько сообщений о перенаправлении доменов на GoDaddy, но ничего об отдельных файлах.

В моем случае я использую общий хост Windows, поэтому я не могу использовать какие-либо инструменты управления IIS. Я надеюсь, что смогу сделать что-то эквивалентное Apache .htaccess файл для настройки перенаправления для отдельных файлов.

В качестве альтернативы, есть ли HTML-документ, который я могу вернуть, который выполняет ту же функцию, что и перенаправление HTTP 301?

Я должен указать, что я использую простой HTML, обслуживаемый с диска, поэтому я не могу вернуть пользовательский код ответа HTTP, как я мог бы, скажем, PHP, ASP.NET, ASP и т. Д.

Документация GoDaddy не распространяется на эту ситуацию.


РЕДАКТИРОВАТЬ

Так user78940 ответ показывает жизнеспособный метод (поддержка GoDaddy <rewrite> в Web.config), однако, несмотря на то, что я прочитал несколько разных руководств по этому элементу конфигурации, я все еще не могу заставить его работать.

Во-первых, я использую виртуальный хостинг, а значит, у меня есть физический структура папок:

root                      < -- used for primarysite.com
    - drewnoakes.com      < -- nested virtual hosting
    - someothersite.com   < -- nested virtual hosting

Здесь есть три сайта. Корень для primarysite.com, подкаталоги для сайтов с соответствующими названиями. К сожалению, именно так нужно поступать с GoDaddy. У вас всегда есть один первичный сайт, а затем он там гнездится.

К сожалению, установка GoDaddy дает перенаправление, если вы не помещаете в конце URL-адреса косую черту (для доступа к документу по умолчанию в этой папке), что означает:

http://drewnoakes.com/code/exif (без косой черты)

... перенаправляется на ...

http://drewnoakes.com/drewnoakes.com/code/exif/ (с косой чертой в конце)

Это означает, что в индексе Google есть оба URL. Я хочу привести в порядок эту ситуацию, сделав первое перенаправление правильно, а второе - перенаправлением в каноническую форму, чтобы я не страдал от снижения рейтинга страниц, а мои URL-адреса менее смущающий легче запомнить.

Я пробовал эту конфигурацию, но в итоге получился бесконечный цикл 301-перенаправления:

<rewrite>
  <rewriteMaps>
    <rewriteMap name="StaticRedirects">
      <add key="/drewnoakes.com/code/exif/" value="/code/exif/" />
    </rewriteMap>
  </rewriteMaps>
  <rules>
    <rule name="RedirectRule" stopProcessing="true">
      <match url=".*" />
      <conditions>
        <add input="{StaticRedirects:{REQUEST_URI}}" pattern="(.+)" />
      </conditions>
      <action type="Redirect" url="{C:1}" appendQueryString="False" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

Итак, как я могу настроить перенаправления с подстановочными знаками IIS для этого сценария с помощью <rewrite> элемент конфигурации?

В <meta HTTP-EQUIV="REFRESH"....> метод вернет ответ 200 (не настоящий ответ перенаправления, как 301/302 / и т. д.).

В панели управления Afaik Go Daddy нет функции для перенаправления только определенных файлов в общие учетные записи Windows.

В общем плане Windows вы можете использовать перезапись URL-адресов IIS 7 с помощью файла web.config, помещенного в корень каталога вашего веб-сайта. Вам нужно будет подтвердить, что ваша конкретная учетная запись хостинга находится на сервере IIS 7+. Если да, добавьте следующий файл web.config для выполнения простого перенаправления:

    <?xml version="1.0"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rewriteMaps>
                <rewriteMap name="StaticRedirects">
                    <add key="/somedir/old-page.html" value="/otherdir/new-page.html" />
                </rewriteMap>
            </rewriteMaps>
            <rules>
                <rule name="RedirectRule" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{StaticRedirects:{REQUEST_URI}}" pattern="(.+)" />
                    </conditions>
                    <action type="Redirect" url="http://www.somedomain.com{C:1}" appendQueryString="False" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Подробнее см. В разделе «Использование карт перезаписи для перенаправления» здесь: http://learn.iis.net/page.aspx/469/using-rewrite-maps-in-url-rewrite-module/

Другой Web.config подход (который работает и с виртуальным хостингом GoDaddy в Windows) заключается в использовании Элемент конфигурации httpRedirect:

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <httpRedirect enabled="true" exactDestination="true"
                  httpResponseStatus="Permanent">
      <add wildcard="*from/path" destination="/to/path/" />
    </httpRedirect>    
  </system.webServer>
</configuration>

Вы можете сделать это с помощью перенаправления html:

<meta HTTP-EQUIV="REFRESH" content="0; url=http://www.somedomain.com/somefile.pl">