我想将我所有的网站流量重定向到 "https://www.example.com/index.html"

I want to redirect all my website traffic to "https://www.example.com/index.html"

如果有人像这样访问我的网站:

我想将其重定向到 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(两次重定向)。