Похоже, вы используете isapi_rewrite v2, поэтому я отвечу за эту версию. Синтаксис v3 немного отличается.
В первой строке, мне кажется, нужна !
для негативного взгляда на www. Как показано, он соответствует www вместо not-www.
Ответ включает в себя захват фрагментов URL, а затем их использование в перезаписи с подматрицами $ 1, $ 2 и т. Д.
RewriteCond Host: (?!www\.)example.com
RewriteRule (.*) http\://www.example.com$1 [I,RP]
Вы можете сделать его более универсальным для любого домена, просто скопировав его на другие веб-сайты, захватив вместо example.com. Это первый захват $ 1, в то время как остальная часть URL теперь составляет $ 2.
RewriteCond Host: (?!www\.)(.*)
RewriteRule (.*) http\://www.$1$2 [I,RP]
Приведенное выше правило всегда будет перенаправлять на http, даже если страница была https. Если вы хотите сохранить http или https как есть, например, от https://example.com/a?b=1
до https://www.example.com/a?b=1
, найдите флаг https и замените «s». Это сложно описать словами: он ищет значение переменной сервера HTTPS «включено» и сохраняет его, если оно «включено» (теперь это 2-й захват), и не сохраняет его, если это что-то еще. Затем, как правило,? 2 проверяет, есть ли второй захват. Если это так, он добавляет 's', в противном случае (двоеточие), он ничего не добавляет (ничего после двоеточия). В этом наборе остальная часть URL теперь является третьей подстрокой.
RewriteCond Host: (?!www\.)(.*)
RewriteCond %HTTPS (on)|.*
RewriteRule (.*) http(?2s:)\://www.$1$3 [I,RP]
Наконец (почти готово!), Это не оставляет поддоменов в покое. Из-за (. *) Вместо «example.com» он будет перезаписывать abc.example.com/whatever...
в www.abc.example.com/whatever...
. Таким образом, если у вас есть субдомены, которые нужно оставить в покое, например, staging или localhost для разработчиков, или скажите «shop» для размещенного торгового домена, вы можете «или» сделать это с помощью «www» (обратите внимание, что localhost не имеет конечной точки, обрабатывать просто //localhost).
RewriteCond Host: (?!www\.|staging\.|shop\.|localhost)(.*)
RewriteCond %HTTPS (on)|.*
RewriteRule (.*) http(?2s:)\://www.$1$3 [I,RP]