我的网站上有一些页面使用http和其他使用https的页面。现在我想使用mod_rewrite将www附加到所有URL,无论它们是使用http还是https。
我目前的代码是.htaccess:
RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index.php
RewriteCond $1 !^(index\.php|public|assets|robots\.txt)
RewriteRule ^(.*)$ ./index.php/$1 [L]
请注意前两行,其余的是其他重写规则,但我包含它以防它们导致我的前两行出现任何错误。
现在,这会将所有页面重定向到http,但我希望将使用https的页面重定向到正确的协议。我尝试使用StackOverflow(htaccess redirect for non-www both http and https)上的线程解决方案,但它对我不起作用。
答案 0 :(得分:0)
您链接的答案应该完美无缺。如果它不起作用,则可能未设置HTTPS变量。这通常是因为您没有在Apache服务器上执行HTTPS。也许你有一个代理,它或负载均衡器?在这种情况下,您需要确保设置HTTPS变量。像这样的东西经常有效(这个例子适用于亚马逊弹性负载平衡器):
SetEnvIf X-Forwarded-Proto https HTTPS=1