强制用户使用https:// + www

时间:2017-01-22 10:09:22

标签: apache .htaccess web https

目标是子域名tc.gamingprouk.net,它使用的是有效的SSL。我想.htaccess不仅要添加https://或www。我想要它们两个!像https://www.tc.gamingprouk.net一样。 这就是我的.htaccess包含的内容:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^tc.gamingprouk.net [NC]
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.tc.gamingprouk.net/$1 [R,L]
# Hiding file extensions
Options +MultiViews

RewriteEngine on

# For .php, .html & .shtml URL's:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]
RewriteRule ^([^\.]+)$ $1.shtml [NC,L]

问题在于:

案例1:

用户导航至 - > tc.gamingprouk.net
.htaccess重写为 - > https://tc.gamingprouk.net
问题:没有www。!

案例2:
用户导航至 - > www.tc.gamingprouk.net
.htaccess什么都不做! 问题:它没有https

案例3:
用户导航至 - > https://www.tc.gamingprouk.net
.htaccess改写为相同的 问题:仅在这种情况下,它同时包含https://www

2 个答案:

答案 0 :(得分:0)

您可以使用:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [R=301,L,NE]

这会检查wwwHTTPs是否都已启用,如果不是,则会将其打开。在测试之前,请确保清除浏览器缓存。

答案 1 :(得分:0)

回答

我发现了你可以使用的东西。以下 .htaccess 代码是Google的一部分:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]
# Hiding file extensions
Options +MultiViews

RewriteEngine on

# For .php, .html & .shtml URL's:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]
RewriteRule ^([^\.]+)$ $1.shtml [NC,L]