Ответ 1
Я бы порекомендовал принудительное использование www. версия сайта, по этой причине, среди прочего, этот сайт имеет отличные причины, почему...
http://www.yes-www.org/why-use-www/
Для этого в .net вы можете добавить следующее в ваш web.config
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to www" stopProcessing="true">
<match url="(.*)" />
<conditions trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^sitename.com$" />
</conditions>
<action type="Redirect" url="{MapProtocol:{HTTPS}}://www.{HTTP_HOST}{HTTP_URL}" redirectType="Permanent"/>
</rule>
</rules>
<rewriteMaps>
<rewriteMap name="MapProtocol">
<add key="on" value="https" />
<add key="off" value="http" />
</rewriteMap>
</rewriteMaps>
</rewrite>
</system.webServer>
Это будет автоматически перенаправлять навсегда (см. Добавление redirectType = "Permanent") для URL, не относящихся к www, к эквиваленту www и сохранит протокол HTTP (s).
Часть trackAllCaptures связана с сопоставлением с регулярным выражением - в нашем случае нам не нужно ничего захватывать; нам нужно только соответствовать правилу, поэтому мы можем оставить значение false.
Шаблон регулярного выражения ^ sitename.com $ будет соответствовать, когда имя хоста точно совпадает с "sitename.com" - ^ означает начальную позицию, а $ означает конечную позицию
Карта переписывания взята из идеи Джеффа Грейвса, которую я считаю, http://jeffgraves.me/2012/11/06/maintain-protocol-in-url-rewrite-rules/
Способ, который я показал, показывает только один способ сделать это, как и в большинстве случаев - есть несколько способов достижения этого.
У Скотта Форсайта есть статья о другом способе достижения этой цели (также ссылается на Джеффа Грейвса) http://weblogs.asp.net/owscott/url-rewrite-protocol-http-https-in-the-action