我有带apache的ubuntu服务器。 Everythink工作正常。现在我有8个域名。一个与virtualhost链接。我们称之为maindomain.com。其他7个域名链接到另一个虚拟主机,我们将其称为secondarydomain1.com到secondarydomain7.com。
我需要将这7个域重定向到主域。 /之后的所有内容都必须重定向到基本域。例如,secondarydomain2.com/file.php将被重定向到maindomain.com
有人可以帮我解决如何使用.htaccess文件吗?
我试过这样的事,但它没有用。
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^secondarydomain\.com$ [NC]
RewriteRule ^(.*)$ http://maindomain.com [R=301,L]
结果是"您无权访问此服务器上的/file.php。"
答案 0 :(得分:0)
您需要在apache中启用重写。
sudo a2enmod rewrite
您的规则不是将请求uri添加回域部分,这就是您没有按预期获得子部分的重定向的原因。
试试这个:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^secondarydomain\.com$ [NC]
RewriteRule ^(.*)$ http://maindomain.com%{REQUEST_URI} [R=301,L]
在测试框上测试:
curl http://192.168.163.161/test.html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://maindomain.com/test.html">here</a>.</p>
<hr>
<address>Apache/2.2.15 (CentOS) Server at 192.168.163.161 Port 80</address>
</body></html>
答案 1 :(得分:0)
我有一些消息。事实上,工作重定向并没有真正起作用。它们是由Chrome缓存引起的。清理缓存后,我收到错误“您无权访问此服务器上的/info.php”。如果.htaccess看起来像这样:
# complete all the tasks
del BigResourceTask._resource # free memory
# do something else
r = BigResourceTask.resource # create when needed
顺便说一下。我可以在phpinfo中看到启用了mod_rewrite。