Apache VirtualHost работает неправильно

Проблемы

Проблема, с которой я сталкиваюсь, – это заставить VirtualHost работать правильно. Вот как у меня две установки:

<VirtualHost *:80> DocumentRoot "/Apps/XAMPP/htdocs" ServerName wrks.tk ErrorLog "/Logs/Workarea/Error.log" CustomLog "/Logs/Workarea/Access.log" common <Directory "/Apps/XAMPP/htdocs/Workspace"> AllowOverride all Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:80> DocumentRoot "/Apps/XAMPP/htdocs/REDIR" ServerName www.wrks.tk <Directory "/Apps/XAMPP/htdocs/REDIR"> AllowOverride all Order allow,deny Allow from all </Directory> </VirtualHost> 

Предполагается, что вы это перенаправляете, если вы подключаетесь к http://www.wrks.tk/ к http://wrks.tk/ но по какой-то причине http://www.wrks.tk загружает ту же самую точную домашнюю страницу как http://wrks.tk/ (вместо перенаправления, как и предполагалось). Но, как вы можете видеть, оба виртуальных хоста указываются на другой каталог:

/Apps/XAMPP/htdocs (настоящая Домашняя страница) – это то, что загружает http://wrks.tk

/Apps/XAMPP/htdocs/REDIR (страница перенаправления), предполагается перенаправить http://www.wrks.tk на http://wrks.tk . Это то, что у меня есть в файле:

 <html> <body> <script>window.location.replace("http://wrks.tk/");</script> <h1 style="text-align: center;">Redirecting you to the correct link</h1> </body> </html> 

Простой сценарий переадресации, но вместо этого он просто загружает домашнюю страницу.


Попытки решения

  • Опорожнение кеша
  • Перезапуск Apache несколько раз
  • Проверка журнала ошибок (не было ошибок, которые помогли)

Но никто из них не решает мою проблему, поэтому я задаю этот вопрос сейчас.

Извиняясь за любую путаницу, очень похожие ссылки затрудняют понимание и чтение.

Но чтобы объяснить это лучше,

Подключитесь к http://google.com/ и узнайте, как он перенаправляет вас на http://www.google.com/

Я хочу, в принципе, наоборот, но VirtualHosts не позволяют мне это делать.

Related of "Apache VirtualHost работает неправильно"

Во-первых, вы действительно близки. Убедитесь, что модуль mod_rewrite apache включен. Во-вторых, вам не нужны два виртуальных хоста, поэтому вы можете их объединить (я оставил тропы нетронутыми):.

 <VirtualHost *:80> DocumentRoot "/Apps/XAMPP/htdocs" ServerName wrks.tk ServerName www.wrks.tk ErrorLog "/Logs/Workarea/Error.log" CustomLog "/Logs/Workarea/Access.log" common <Directory "/Apps/XAMPP/htdocs/Workspace"> AllowOverride all Order allow,deny Allow from all </Directory> </VirtualHost> 

Теперь в каталоге htdocs создайте файл .htaccess с контентом:

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

Полностью REDIR с содержимым. Это будет htaccess будет перенаправлять веб-сайт, который начинается с www. к не-www.