Перенаправить с не-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>