如果有人访问我的网站,比如:
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$1 [R=301,L,NE]
上面的代码工作正常,但是,如果访问者类型https://www.example.com
它不会重定向到https://www.example.com/index.html
,也如果访问者使用谷歌浏览器和类型www.example.com
它也不会重定向到https://www.example.com/index.html
。
1条答案
按热度按时间wlp8pajw1#
请尝试以下方法:
只有第一条规则满足您的问题中列出的要求。所有指定的URL都被重定向到
https://www.example.com/index.html
(HTTPS + www)。第二个和第三个规则只是通用的规范(www + HTTPS)重定向,用于其他任何内容,包括用户是否请求
/index.html
。首先使用302(临时)重定向进行测试,以避免潜在的缓存问题。在测试之前,您需要清除浏览器缓存。
看看你的规矩......
第一个规则重定向到HTTP,而不是HTTPS,后者是预定目标。
第二个规则将 * 所有内容 *(包括任何静态资产)重定向到
/index.html
,并在末尾附加所请求的URL(使用$1
反向引用)。例如,对http://example.com/foo
的请求将被重定向到https://www.example.com/index.htmlfoo
(分两次重定向)。更新日期:
每次我在localhost环境中工作时,localhost都会受到HTTPS重定向的影响。...我在htaccess文件中没有其他规则,只有这个重定向规则。是的,可以在localhost上关闭所有这些规则。我的本地dev环境中的主机名是“localhost”。
要在 localhost 上禁用所有这些规则,您可以首先在
RewriteEngine
指令之后添加以下规则。上述声明......对于每个URL请求,其中
Host
头完全等于localhost
,则不执行 * 替换 *(由连字符-
表示),并且L
(last
)标志防止处理以下规则。