我遇到的问题是让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>
一个简单的重定向脚本,但它只是加载主页而不是这样做。
但是,这些都没有解决我的问题,这就是我现在问这个问题的原因。
对于任何混淆道歉,非常相似的链接使得理解和阅读令人困惑。
但要更好地解释,
连接 http://google.com/ 并注意如何将您重定向到 http://www.google.com/
我想要的基本上是相反的,但VirtualHosts并没有让我这样做。
答案 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。