www重写规则+密码验证组合,导致非www网址返回401/404错误

时间:2014-04-03 23:12:32

标签: apache .htaccess authentication mod-rewrite url-rewriting

我刚刚注意到我的域名的非www网址存在问题:

当我输入http://mydomain.com(没有www)时, 浏览器尝试转到http://www.mydomain.com/401.shtml,并返回404。

该网站目前受密码保护(从根目录), 我有这个.htaccess规则,我设置将所有非www重定向到www:

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

事情是,我几天前已经应用了密码保护和上述规则, 虽然这个问题现在才出现。 (我记得在没有www的情况下访问网址,并且工作正常)。

另一个非常奇怪的事情:

在FF和IE10上,no-www Url既不适用于根(http://mydomain.com)也不适用于任何页面(http://mydomain.com/page.php) - 获取401/404;在Chrome上,只有根不起作用,而内页被重定向到www网址,并显示正常。

修改

删除.htaccess规则或身份验证中的每一个解决了这个问题,但我不是要删除它们。

由于

1 个答案:

答案 0 :(得分:1)

尝试添加此行

ErrorDocument 401默认

到.htaccess