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

Как перенаправить мой веб-сайт с веб-сайта без www на WWW с помощью Apache2?

Сейчас я пытаюсь создать свою личную веб-страницу.

Я использую VPS и вручную установил Wordpress, и, похоже, все работает ... за исключением случаев, когда я перехожу на версию своего веб-сайта без www, появляется страница, которая не найдена.

www.andrewrockefeller.com <- Работает

andrewrockefeller.com <- Нет (и я хочу перенаправить его на www.andrewrockefeller.com)

Я попытался добавить функциональность RewriteEngine в свой .htaccess, но это не работает.

Я также попытался добавить метод, получивший наибольшее количество голосов, в мой файл по умолчанию (который apache2.conf извлекает из:

<VirtualHost *>
  ServerName andrewrockefeller.com
  Redirect 301 / http://www.andrewrockefeller.com/
</VirtualHost>

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

Спасибо за уделенное время!

РЕДАКТИРОВАТЬ: Мой файл .htaccess выглядит следующим образом:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Раздел #Wordpress был автоматически создан, когда я изменил настройки с? P = 1 (уродливые ссылки) на prettylinks. Любые предлагаемые решения, которые я нашел здесь, я попробовал и перезапустил apache2, и это не сработало.

Проблема 1: неправильный DNS

У вас нет записи A или CNAME для www.andrewrockefeller.com. В результате браузер не может преобразовать ваше доменное имя в IP-адрес.

dig andrewrockefeller.com 

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.2 <<>> andrewrockefeller.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31887
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;andrewrockefeller.com.         IN      A

;; AUTHORITY SECTION:
andrewrockefeller.com.  1739    IN      SOA     dns226.a.register.com. root.register.com. 2013082003 28800 7200 604800 14400

;; Query time: 22 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Oct 31 12:44:47 2013
;; MSG SIZE  rcvd: 98

Похоже, ваш домен зарегистрирован на Register.com. На их портале вам нужно добавить запись A для

andrewrockefeller.com -> 76.164.206.80

После добавления этой записи A версия вашего домена domain.com должна разрешиться.

Проблема 2: каноническое доменное имя

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

Ссылка: http://wiki.apache.org/httpd/CanonicalHostNames

Я предпочитаю использовать mod_rewrite и этот метод:

# And for a site running on port 80
RewriteCond %{HTTP_HOST}   !^example\.com [NC]
RewriteCond %{HTTP_HOST}   !=""
RewriteRule ^/?(.*)         http://example.com/$1 [L,R=301]

В основном это говорит о том, что если домен не совпадает с example.com, перенаправление на example.com. Если вы хотите стандартизировать сайт www.example.com, измените его соответствующим образом:

# And for a site running on port 80
RewriteCond %{HTTP_HOST}   !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST}   !=""
RewriteRule ^/?(.*)         http://www\.example.com/$1 [L,R=301]

Ваш ответ заключается в DNS. Регистратор вашего доменного имени, register.com, должен предоставлять возможность управлять записями DNS. В этом разделе вашей панели управления, вероятно, будет возможность включить www. поддомен.

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

Видеть: http://help.register.com/app/answers/detail/a_id/2882

<If "%{HTTP_HOST} != 'www.example.com'">
    Redirect / http://www.example.com/
</If>

Как объяснено здесь в канонических именах хостов Переназначение / перезапись документов Apache