Apache重写条件不匹配

时间:2013-09-19 12:34:23

标签: apache .htaccess mod-rewrite

我对这些东西感到疯狂:

这是我的.htaccess内容:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

当我继续:http://mydomain.com

以下是重写日志中的内容:

RewriteCond: input='www.mydomain.com' pattern='!^www\.' => not-matched

所以输入应该是mydomain.com,条件应该匹配但是没有...

当我尝试在.htaccess中指定域名时,我会得到无限循环......

我会尽量保持冷静,并希望有人可以帮助我。

谢谢你们!

1 个答案:

答案 0 :(得分:1)

所以我解决了问题,这就是我需要做的所有事情的清单,也许有人会遇到同样的问题。

首先,我需要使用此cmd激活apache的重写模式:

a2enmode rewrite

然后你需要转到httpd.conf或apache2.conf并先设置两个:

AllowOverride None

进入

AllowOverride All

如果您定义了一些特定的域重定向,则只在域conf文件中进行。

现在您可以检查.htaccess是否为红色。写了像XXXX这样的东西,它应该返回一个内部500错误。如果不是,则重写,因此.htaccess不会激活。

现在,这就是我被阻止的地方,你需要检查你的dns重定向。

那是我以前的配置:

www.mydomain.com    typeA  XXX.MY.IP.XXX
.mydomain.com       typeA  www.mydomain.com

所以事实上,即使网址仍然显示http://mydomain.com,apache也认为它来自www.mydomain.com所以.htaccess没有动作......

我这样设置:

www.mydomain.com    typeA  XXX.MY.IP.XXX
.mydomain.com       typeA  XXX.MY.IP.XXX

并加入我的apache配置域

ServerName www.tagmydiscount.com
ServerAlias tagmydiscount.com

现在,它终于像魅力一样工作了。希望它能为你们中的一些人提供帮助。