我的.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
所以我不知道我做错了什么。
与您的其他条件一样,检查host
www
中是否存在,您需要再次检查server 变量,而不是- 它仅包含 URL 路径。HTTP_HOST
REQUEST_URI
尝试以下操作:
我还添加了字符串锚点 (
^
) 的开头,因此如果它会失败(更有效),它将更快地失败,而不是在主机字符串中的任何位置搜索“myloadbalancername”。^(.*)$
此外,如果您要捕获整个模式(例如,与 相同) ,则无需包含锚点(.*)
。在测试之前清除所有中间缓存,因为浏览器会缓存任何错误的 301。