Как настроить редирект с www на без www

При проведении SEO-оптимизации сайта общепринятой практикой является 301 редирект, например, с сайта http://www.yoursite.com на сайт http://yoursite.com. Это делается в первую очередь для того, чтобы поисковые роботы не считали эти сайты разными и, соответственно, не разделяли ссылочную популярность вашего сайта между этими доменами. Кроме того, я считаю, что url-пути страниц сайта должны быть максимально простыми, но информативными, следовательно, наличие www вначале немного излишне.

Рассмотрим настройку 301 редиректа на примере сайта, который работает на VPS-сервере DigitalOcean под управлением веб-сервера Nginx и операционной системы Debian 8.5. Хорошее руководство можно также найти на сайте How To Redirect www to Non-www with Nginx on CentOS 7.

1. Настройка DNS

Необходимо добавить новую DNS-запись типа А со значением "www" и указать тот же IP-адрес, который используется для записи со значением "@". На рисунке добавленная запись отмечена плюсом:

Добавление DNS-записи

Изменения вступят в силу не мгновенно, а может понадобиться минут 10-15.

2. Настройка сервера Nginx

Первого пункта недостаточно. Следует настроить сервер Nginx, потому что DNS не делает нужный нам редирект, а это выполняет веб-сервер. Открываем конфигурационный файл:

nano /etc/nginx/sites-enabled/default

и добавляем еще одну запись для раздела server:

# Существующая конфигурация
server {
    server_name yoursite.com;
    # ...
}
# Добавленный редирект
server {
    server_name www.yoursite.com;
    return 301 $scheme://yoursite.com$request_uri;
}

Сохраняем файл и перезапускаем сервер:

service nginx restart

Можно проверить как работает перенаправление с сайта с www на без www:

curl -I www.yoursite.com

Получим ответ типа такого:

HTTP/1.1 301 Moved Permanently
Server: nginx/1.6.2
Date: Sat, 16 Jul 2016 21:30:23 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: http://yoursite.com/

Теперь перенаправление работает для всех путей сайта: www.yoursite.com/url будет перенаправлен на yoursite.com/url.

Обновление блога uBlog 0.0.1

Постепенно движется работа по созданию блогового движка uBlog. Проделано немало работы, поэтому думаю, что можно присвоить ему первую dev-версию. Что же сделано на данный момент в движке uBlog 0.0.1.

  1. Добавлен sitemap для индексации сайта поисковыми машинами. Теперь это не статический файл sitemap.xml, а ссылка вида http://mvano.com/sitemap. Содержимое файла генерируется динамически по запросу. Таким образом, каждый раз, когда поисковый бот заходит по этой ссылке, он получает актуальный перечень всех путей блога.
  2. Добавлена возможность RSS-подписки http://mvano.com/rss. Пока что эта возможность не очень информативна, но валидацию проходит.
  3. Был добавлен простой поиск http://mvano.com/search, который выводит названия постов, где встречается искомый текст.
  4. Появилась возможность делиться своими постами через социальные сети. Для этого был использован сервис AddThis. Получилось достаточно гибкое решение, потому что можно настроить перечень необходимых социальных кнопок самому (а их там много ~200). Среди бесплатных профилей немало вариантов расположения share-панелей. Кроме того, сервис собирает разную статистику.
  5. В постах появилась подстветка синтаксиса кода. Для этого подключена библиотека Prism и немного изменена одна из стандартных тем оформления. Например, так выглядит фрагмент кода на языке C#:
public class Program
{
   public static void Main()
   {
      System.Console.WriteLine("Hello, World!");
   }
}
  1. Немного изменилась структура проекта:
  • uBlog.Data – библиотека уровня доступа к данным (Data Access Layer), которая работает на Entity Framework Core с базой данных SQLite
  • uBlog.Core – библиотека сервисов (Service Layer) содержит набор классов ядра блога
  • uBlog.Web – кросплатформенное приложение ASP.NET Core использует движок представлений Razor для генерирования страниц обычным пользователям блога и предоставляет WebAPI для админки
  • uTool – интерфейс командной строки (CLI) для начального конфигурирования базы данных, наполнения ее demo-данными, миграций, обновления блога в будущем и т.д.

Стоит отметить одну замечательную вещь, которая мне очень понравилась. Для размещения проекта на сервере не нужно даже сборку делать на Linux. Достаточно сделать publish проекта в Visual Studio и залить полученную папку на сервер. Кросплатформенность в действии :-)

О моем блоге

Всех приветствую!

Решил наконец-то создать свой личный блог. И не просто создать, используя готовый движок типа WordPress, Ghost, Е2 Эгея, а написать с нуля блоговый движок на C# на базе ASP.NET Core 1.0.

Мой блоговый движок

Знаю, знаю, что мой велосипед будет с квадратными колесами, но решив создать блоговый движок, я задался такими основными целями:

  • изучить новый кросплатформенный фреймворк ASP.NET Core 1.0;
  • проверить, насколько готова эта технология для применения ее в продакшене, например, на VPS сервере Debian 8.5;
  • реализовать админку блога на фреймворке типа AngularJS;
  • разработать архитектуру приложения на базе трехуровневой модели, использовав принцип Dependency Injection;
  • проделать много другой рутинной работы c HTML, CSS, SASS, Gulp, Entity Framework, Markdown и т.д.;
  • и конечно все это хорошенько покритиковать :-)

Как можно заметить, большинство современных технологий для веба (ASP.NET Core, Java, Node.js, Ruby on Rails) работают на виртуальных машинах и виртуальных серверах (VPS), а не на разделяемом хостинге (shared hosting), как это было раньше, как это успешно до нашего времени делает PHP. Наверное, один из факторов живучести PHP как раз и является низкая стоимость хостинга, что немало важно для личных сайтов, для сайтов мелкого бизнеса. Сегодня на рынке IT есть недорогой и доступный VPS хостинг, например:

  • BuyVM - 2 Cores / RAM 256 MB / SSD 30 GB / $5.00 per month;
  • DigitalOcean - 1 Core / RAM 512 MB / SSD 20 GB / $5.00 per month;
  • VPSDime - 4 Cores / RAM 6 GB / SSD 30 GB / $7.00 per month.

Однако объем оперативной памяти 512 МБ не так уж и велик для VPS, на котором работают: серверная операционная система, система управления базой данных, сайт с различными сервисами и, конечно же, виртуальная машина (CLR, JVM). В условиях ограниченного бюджета на хостинг компилируемые языки (С/С++, Objective-C, D, Go) могут быть достаточно выгодными. К сожалению, их редко используют для создания сайтов. Но это уже другая история, о которой мы тоже поговорим.

Итак, в дальнейшем я хочу написать цикл статей о создании блогового движка на ASP.NET Core, детально остановить на тех вопросах, которые забрали у меня много времени, особенно в архитектурном плане. Эти статьи не претендуют на исчерпывающее руководство по разработке сайта на C#, но могут быть полезными новичкам.

В этом блоге я планирую писать о программировании на Assembler, C, C++, C#, JavaScript, веб-разработке, различных технологиях, новостях в мире IT и многом другом. Язык изложения будет как русским, так и английским.

К сожалению, блог на данным момент очень примитивный и находится в стадии разработки, многих полезных фич ему не хватает по сравнению со зрелыми продуктами. Но будем развиваться! Все, кому интересно, пишите коментарии, давайте дельные советы :-)