将 www 添加到域名但不添加到特定域名

将 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所以我不知道我做错了什么。

答案1

和你的其他情况一样,检查是否www存在主持人,您需要HTTP_HOST再次检查服务器变量,而不是REQUEST_URI- 它仅保存 URL 路径。

请尝试以下操作:

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

我还添加了一个字符串锚点(^),这样如果它要失败的话,它会更快失败(更有效率),而不是搜索^(.*)$对于主机字符串中的任意位置的“myloadbalancername”。此外,如果您要捕获整个模式(例如,与 相同(.*)),则无需包含锚点。

测试之前清除所有中间缓存,因为任何错误的 301 都会被浏览器缓存。

相关内容