Apache VirtualHost无法正常工作

时间:2014-01-31 06:52:23

标签: javascript php apache

问题

我遇到的问题是让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并没有让我这样做。

1 个答案:

答案 0 :(得分:0)

首先,你真的很亲密。确保已启用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。