Перенаправить с не-www на www используя 301 на IIS

Я разместил свой сайт на сервере Windows на 1&1, Там нет возможности добавить на web.config элементы <rewrite><rules>... так что я использую .htaccess файл... Я не настолько эксперт, я ожидал, что это будет работать только на сервере Apache. Я был неправ! мой .hataccess работает также на IIS.

Вот код:

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

//Prevent viewing of .htaccess file
<Files .htaccess>
order allow,deny
deny from all
</Files>

Проблема перенаправления выполняется с помощью 302. Я хочу 301 перенаправление. Я использую Fiddler, и это результат:

Сайт, где у меня есть проблема www.renovahaus.itКак я могу решить мою проблему?

Thanx

1 ответ

Обычно это делается с помощью модуля URLRewrite, в случае 1 и 1 это отключено в файле web.config, однако при использовании файла.htaccess содержимое.htaccess по-прежнему транслируется в базовый файл web.config.

Вы можете прочитать отличный учебник по процессу конвертации здесь

Но в итоге вы, вероятно, ищете блок кода:

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

Который должен прозрачно добавить следующее в файл web.config (даже если вы не можете редактировать его напрямую)

<rewrite>
  <rules>
    <rule name="Imported Rule 1" stopProcessing="true">
      <match url="^(.*)$" ignoreCase="false" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^example\.com$" />
      </conditions>
      <action type="Redirect" redirectType="Permanent" url="http://www.example.com/{R:1}" />
    </rule>
    <rule name="Imported Rule 2" stopProcessing="true">
      <match url="^(.*)$" ignoreCase="false" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
        <add input="{URL}" pattern="^/favicon.ico$" ignoreCase="false" negate="true" />
      </conditions>
      <action type="Rewrite" url="index.php?q={R:1}" appendQueryString="true" />
    </rule>
  </rules>
</rewrite>
Другие вопросы по тегам