Без 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]