Без WWW. домен не перенаправляет на www. домен

В двух словах

РАБОТАЕТ ШТРАФНО: www.exampledomain.co.uk {/ with-any-url}
ДАЕТ 404 ОШИБКА: exampledomain.co.uk {/ with-any-url}

В деталях

У меня возникла проблема с сайтом, работающим в linux/apache2, из-за чего "www." URL-адреса работают нормально, однако с "www." удалено 404 возвращается за каждый URL. Домен не показывает ошибок в проверке dnsstuff.com, при этом www и обычный домен указывают на один и тот же IP-адрес.

Когда я использую cmd для проверки связи с доменом и www. домен, оба разрешают к тому же IP и отвечают.

Я реализовал этот код в файле.htaccess в веб-корне, который служит перед префиксом "www". на запросы без www:

Options +FollowSymlinks
Options All -Indexes
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Однако это тоже не работает. Точные правила перезаписи проверяются и функционируют на другом сайте, чтобы обеспечить использование "www". быть префиксом.

Это файл конфигурации vhosts используется:

<VirtualHost *:80>
  ServerAdmin exampleuser@exampledomain.co.uk
  ServerName  www.exampledomain.co.uk
  ServerAlias exampledomain.co.uk

  DirectoryIndex index.php index.html
  DocumentRoot /home/exampleuser/public/example.co.uk/public_html
     <Directory /home/exampleuser/public/example.co.uk/public_html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
    </Directory>

  LogLevel warn
  ErrorLog  /home/exampleuser/public/example.co.uk/log/error.log
  CustomLog /home/exampleuser/public/example.co.uk/log/access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerName exampledomain.co.uk
    Redirect permanent / http://www.exampledomain.co.uk/
</VirtualHost>

Имя сервера и псевдоним были определены в обратном порядке к тому, что показано здесь (с промежуточным перезапуском apache перезагружается), а вторая запись vhosts для "перенаправления перманента" была добавлена ​​позже, но все безрезультатно.

Что может быть причиной такого поведения? Что-нибудь еще, что я должен проверить? Искал столько материала, чтобы найти решение, но не вижу ничего плохого или отсутствующего. Любая помощь будет оценена!

2 ответа

Решение

Сегодня я заметил, что из предыдущего экземпляра сервера тестирования был другой файл конфигурации vhosts в / etc / apache2 / sites-enabled /, который был оставлен и назван example.co.uk.conf - имя каталога, используемого для сайта, который является основным. Файл exampledomain.co.uk.conf указывал на это / home / exampleuser / public /example.co.uk/ public_html, поэтому я проверил внутри, и файл содержал пустое объявление vhosts:

<VirtualHost *:80>
</VirtualHost>

Когда это <VirtualHost> раздел был закомментирован с помощью хэшей или удален, или файл conf был переименован во что-то отличное от example.co.uk.conf, не являющееся www. запросы затем перенаправлялись в правильный веб-корень, как и с www. запросы и проблема была решена.

Однако мне не ясно, почему этот example.co.uk.conf выбран для запросов к exampledomain.co.uk, а не для запросов на www.exampledomain.co.uk, поэтому, если кто-то может расширить этот ответ, отредактируйте или прокомментируйте, Спасибо!

Options -Indexes
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
Другие вопросы по тегам