.htaccess重定向对我不起作用

时间:2016-12-29 19:18:46

标签: apache .htaccess

我有带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。"

2 个答案:

答案 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。