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

Использование «голого» домена в apache, без «www» в домене в httpd.conf

Невероятно, но нет хорошего учебника или простого справочного руководства по использованию голых доменов (без поддоменов) в качестве основного URI в Интернете, которые я мог бы найти.

Я пытаюсь настроить это в моем httpd.conf в apache. Поскольку я все еще относительно новичок в этом серверном материале, я пытался понять это сам, все, что я мог сделать, это настроить несколько неприятных циклов перенаправления и ошибки 400.

Есть много примечаний для наиболее распространенных:

http: // -> https: //

и

голый -> www.

и тонна материала .htaccess (не интересно)

Я хочу http://www.domain.com -> http://domain.com

Самое полезное, что я нашел, было следующее: Несколько доменов (включая www- "поддомен") на apache?

Я закончил использовать решение, упомянутое ceejayoz в этом посте, которое, как отметили некоторые люди, было беспорядочным и сложным, потому что оно дало желаемый результат, но я хотел бы знать лучшие практики для этого в будущем.

Буду признателен за толчок в правильном направлении.

Заранее спасибо.

Есть много веских причин для использования www.example.com скорее, чем example.com. Однако оба варианта являются жизнеспособными. Чтобы сделать то, что вы хотите, просто переключите домены в стандартном документе для использования www. домены.

Мой подход - использовать один виртуальный хост для обоих. Определите виртуальный хост для желаемого домена, затем добавьте другие домены в качестве псевдонимов.

Следующие ниже спецификации должны указывать канонические имена для голого домена. (Правила условия перезаписи изменены из документации по перезаписи apache, чтобы удалить www. от имени.)

ServerName        example.com
ServerAlias       www.example.com
UseCanonicalName  On

RewriteEngine     On
RewriteCond %{HTTP_HOST}   !^example\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://example.com/$1 [L,R]

Если вы включили mod_rewrite, вы можете сделать это так:

RewriteCond %{HTTP_HOST} ^www\.domain\.tld$
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]

В качестве альтернативы можно определить дополнительный виртуальный хост с помощью ServerName www.domain.tld и всегда перенаправлять на domain.tldлибо с помощью HTML, например:

<meta http-equiv="refresh" content="0;URL='http://domain.tld/'" />

Или внутри конфигурации apache vhost с

Redirect permanent / http://domain.tld