Назад | Перейти на главную страницу

Сделать сайт доступным без ввода www

У меня есть веб-сайт, на который можно попасть через www.example.com. Теперь я хочу сделать его также доступным на example.com. Как я могу это сделать?

У меня есть несколько поддоменов, например test.example.com, test2.example.com и т. д. Я тоже немного прочитал и обнаружил, что нужно использовать htaccess для постоянного перенаправления с example.com на www.example.com.

RewriteCond %{http_host} ^example.com [nc]
RewriteRule ^(.*)$ http://www.example.com/$1 [r=301,nc]

Так что теперь не должно быть дублированного контента, и он должен быть оптимизирован для SEO. Но как мне создать A-record? Сейчас есть только один с www.example.com. Если я создам его с помощью example.com, он автоматически отобразится на example.com.example.com ...

Затем мне нужно добавить запись в host-файле. Это похоже на это?

192.168.1.1 example.com

Затем у меня есть несколько записей для VirtualHost для apache. Это правильный файл?

<VirtualHost 192.168.1.1:80>
 ServerName www.example.com
ServerAlias *.www.example.com
ServerAlias example.com

ServerAdmin webmaster@example.com

 DocumentRoot /var/www/html/path

 <Directory /var/www/html/path>
  AllowOverride None
  Options +FollowSymLinks -Indexes -Includes +Multiviews +ExecCGI
  Order allow,deny
  Allow from all
  AllowOverride All
 </Directory>
</VirtualHost>

Решение:

<VirtualHost 192.168.1.1:80>
    ServerName example.com
    Redirect 301 / http://www.example.com/
</VirtualHost>

<VirtualHost 192.168.1.1:80>
    ServerName www.example.com
    ServerAlias *.www.example.com

    ServerAdmin webmaster@example.com

    DocumentRoot /var/www/html/path

    <Directory /var/www/html/path>
        AllowOverride None
        Options +FollowSymLinks -Indexes -Includes +Multiviews +ExecCGI
        Order allow,deny
        Allow from all
        AllowOverride All
    </Directory>
</VirtualHost>

Я сделал это вместе с двумя A-записями (одна для www.example.com и example.com), указывающими на IP-адрес, на котором находится веб-сервер. Кроме того, у меня была следующая запись в /etc/hosts

192.168.1.1 www.example.com example.com

Я также указываю свою запись в белом списке от squid:

.example.com

Но как мне создать A-запись? Сейчас есть только один с www.example.com. Если я создам его с помощью example.com, он будет автоматически сопоставлен с example.com.example.com ...

Почему example.com.example.com? Просто попросите ваш DNS-хост вставить A-запись для @ (самого домена), указывающую на IP-адрес сервера.

Затем мне нужно добавить запись в хост-файл

Нет, если это в DNS, нет.

Затем у меня есть несколько записей для VirtualHost для apache. Это правильный файл?

Лично я предпочитаю поместить "голое" доменное имя в отдельный раздел с тривиальным Redirect permanent директива, чтобы подтолкнуть пользователей к сайту www.

Это позволит избежать (по общему признанию скромного) снижения производительности из-за необходимости анализировать файлы .htaccess с условными перенаправлениями в них.

Это также означает, что вы получите отдельные файлы журнала для двух имен. ИМХО, это хорошо - это упростит определение пользователей домена, из которых на самом деле прибывают, и позволит избежать двойной записи, которую вы получили бы в журнале, если бы это было сделано на одном виртуальном сервере.

Что касается ввода DNS, вам нужно сделать это так:

example.com.        A      192.168.x.y
www.example.com.    CNAME  example.com.

Если у вас есть только файл хоста для тестирования, сделайте следующее:

192.168.1.1 example.com 
192.168.1.1 www.example.com

В этом случае файл виртуального хоста должен выглядеть так:

<VirtualHost 192.168.1.1:80>
ServerName example.com
ServerAlias *.example.com

ServerAdmin webmaster@example.com

DocumentRoot /var/www/html/path

<Directory /var/www/html/path>
    AllowOverride None
    Options +FollowSymLinks -Indexes -Includes +Multiviews +ExecCGI
    Order allow,deny
    Allow from all
    AllowOverride All
</Directory>

файл .htaccess использовать нельзя