【问题标题】:Apache VirtualHost not working correctlyApache VirtualHost 无法正常工作
【发布时间】:2014-02-23 19:08:47
【问题描述】:

问题

我遇到的问题是让 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 不允许我这样做。

【问题讨论】:

    标签: javascript php apache


    【解决方案1】:

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

    【讨论】:

    • 哇,谢谢。这将在未来为我节省很多时间。
    猜你喜欢
    • 2017-07-12
    • 2016-12-01
    • 2017-08-15
    • 2019-04-13
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多