添加www到域,但不是为特定的域

我的.htaccess文件中有以下代码:

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

上面的代码是为了将www添加到域,如果它没有www 。 但是我有一个域名: myloadbalancername-432566808.us-west-1.elb.amazonaws.com (来自AWS Elastic Load Balancer的DNS),并且该域名不能与www 。 那么,如何为所有的域请求添加www ,除了特定的域呢?

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

我试着用上面的代码来检查域名是否有这个单词,然后检查域名是否没有www ,但没有成功。 我是.htaccess初学者,所以我不知道我做错了什么。

与其他情况一样,检查主机中是否存在www ,您需要再次检查HTTP_HOST服务器variables,而不是REQUEST_URI – 它只保存URLpath。

尝试以下操作:

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

我还添加了一个string锚( ^ )的开头,所以如果它失败(更有效),它将会更快地失败,而不是主机string的任何地方search “myloadbalancername”。 另外,如果捕获整个模式,则不需要包含锚(例如。 ^(.*)$(.*)相同)。

在testing之前清除任何中间caching,因为任何错误的301将被浏览器caching。