我想将我所有的网站流量重定向到 "https://www.example.com/index.html"
I want to redirect all my website traffic to "https://www.example.com/index.html"
如果有人像这样访问我的网站:
example.com
www.example.com
http://example.com
http://www.example.com
https://example.com
https://www.example.com
我想将其重定向到 https://www.example.com/index.html
。我试过下面的代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.mywebsite.com/index.html [R=301,L,NE]
上面的代码工作正常,但是如果访问者类型 https://www.example.com
它不会重定向到 https://www.example.com/index.html
并且如果访问者使用 Google chrome 并输入 www.example.com
它也不会重定向到 https://www.example.com/index.html
.
请尝试以下操作:
RewriteEngine On
# Redirect "/" to "/index.html" (HTTPS + www)
RewriteRule ^$ https://www.example.com/index.html [R=301,L]
# Redirect non-www to www (+HTTPS)
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Redirect HTTP to HTTPS (any remaining URLs)
RewriteCond %{SERVER_PORT} 80
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
只有第一条规则满足您问题中列出的要求。所有声明的 URL 都重定向到 https://www.example.com/index.html
(HTTPS + www)。
第二条和第三条规则只是针对其他任何内容的通用规范 (www + HTTPS) 重定向,包括用户是否请求 /index.html
。
首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。测试前您需要清除浏览器缓存。
看看你的规则...
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/index.html [R=301,L,NE]
您的第一个规则重定向到 HTTP,而不是 HTTPS,这是预期的目标。
第二条规则将一切(包括任何静态资产)重定向到/index.html
并在末尾附加请求的URL(使用</code> 反向引用)。例如。 <code>http://example.com/foo
的请求将被重定向到 https://www.example.com/index.htmlfoo
(两次重定向)。
如果有人像这样访问我的网站:
example.com
www.example.com
http://example.com
http://www.example.com
https://example.com
https://www.example.com
我想将其重定向到 https://www.example.com/index.html
。我试过下面的代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.mywebsite.com/index.html [R=301,L,NE]
上面的代码工作正常,但是如果访问者类型 https://www.example.com
它不会重定向到 https://www.example.com/index.html
并且如果访问者使用 Google chrome 并输入 www.example.com
它也不会重定向到 https://www.example.com/index.html
.
请尝试以下操作:
RewriteEngine On
# Redirect "/" to "/index.html" (HTTPS + www)
RewriteRule ^$ https://www.example.com/index.html [R=301,L]
# Redirect non-www to www (+HTTPS)
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Redirect HTTP to HTTPS (any remaining URLs)
RewriteCond %{SERVER_PORT} 80
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
只有第一条规则满足您问题中列出的要求。所有声明的 URL 都重定向到 https://www.example.com/index.html
(HTTPS + www)。
第二条和第三条规则只是针对其他任何内容的通用规范 (www + HTTPS) 重定向,包括用户是否请求 /index.html
。
首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。测试前您需要清除浏览器缓存。
看看你的规则...
RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.example.com/index.html [R=301,L,NE]
您的第一个规则重定向到 HTTP,而不是 HTTPS,这是预期的目标。
第二条规则将一切(包括任何静态资产)重定向到/index.html
并在末尾附加请求的URL(使用</code> 反向引用)。例如。 <code>http://example.com/foo
的请求将被重定向到 https://www.example.com/index.htmlfoo
(两次重定向)。