求教一个 htaccess 写法

2017-02-28 12:06:44 +08:00
 Totato5749

想要实现的需求:

  1. http://www.example.com
  2. http://example.com
  3. https://www.example.com
  4. https://example.com 以上四个链接均跳转到 https://example.com ( http 与 https 区别,有无 www 区别)

求大神指点

1921 次点击
所在节点    Apache
18 条回复
lslqtz
2017-02-28 13:07:46 +08:00
https://example.com 以上四个链接均跳转到 https://example.com
无限重定向大法
nfroot
2017-03-01 15:51:29 +08:00
@lslqtz 服务器要搭配个防火墙来防止 CC 攻击,哈哈哈!
hqfzone
2017-03-01 16:27:46 +08:00
RewriteCond %{SERVER_PORT} !^443$ [OR]
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule "^/?(.*)" "https://example.com/$1" [L,R=301]
Totato5749
2017-03-02 22:03:06 +08:00
@lslqtz
@nfroot

不好意思表达的不清楚,我想实现的是前 3 个都跳转到最后一个


@hqfzone 你这个出个无限重定向了= =
lslqtz
2017-03-02 22:06:46 +08:00
@hqfzone
@Totato5749
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule "^/?(.*)" "https://example.com/$1" [L,R=301]
这个呢?
lslqtz
2017-03-02 22:09:31 +08:00
抱歉,我也写错了。。
lslqtz
2017-03-02 22:12:03 +08:00
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
好吧 刚刚那个似乎没问题
lslqtz
2017-03-02 22:14:36 +08:00
是我写错了。。
改成这样吧:
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
hqfzone
2017-03-03 11:04:12 +08:00
@lslqtz 你最后那个跟我的有什么区别?我发的是我自己用着的规则
Totato5749
2017-03-03 12:06:51 +08:00
@lslqtz
@hqfzone

不知道为什么你们的规则都会无限重定向,是因为我 dns 设置有问题吗?
hqfzone
2017-03-03 16:28:06 +08:00
@Totato5749 具体情况不了解,问题解决了就行吧……
Totato5749
2017-03-03 16:34:38 +08:00
@hqfzone 问题没解决= = 因为会无限重定向,网站进不去
lslqtz
2017-03-03 16:47:09 +08:00
@hqfzone 没区别,但是有可能他的 apache 。。
lslqtz
2017-03-03 16:47:21 +08:00
@Totato5749 其他的 htaccess 呢
Totato5749
2017-03-03 17:03:07 +08:00
@lslqtz

我现在的 htaccess 是网上找的,不过是全部跳转到带 www 的 https 地址,我是不想要 www 来着。。

RewriteEngine on

RewriteCond %{HTTP:KERSSL} !on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteCond %{HTTP_USER_AGENT} !MSIE/[1-8]\. [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301]

RewriteCond %{HTTP:KERSSL} on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteCond %{HTTP_USER_AGENT} !MSIE/[1-8]\. [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301]

RewriteCond %{HTTP:KERSSL} !on
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteCond %{HTTP_USER_AGENT} !MSIE/[1-8]\. [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
lslqtz
2017-03-03 17:05:58 +08:00
@Totato5749 那你不会之前的没删就加上去了吧。。
你自己不会改吗?
RewriteEngine on

RewriteCond %{HTTP:KERSSL} !on
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
RewriteCond %{HTTP:KERSSL} on
RewriteCond %{HTTP_HOST} !^example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
Totato5749
2017-03-03 22:20:11 +08:00
@lslqtz
@hqfzone

真的谢谢你们,在 @hqfzone 的基础上改了下可以了,大概是因为 apache 不能用 443 来判断?

RewriteEngine on

RewriteCond %{HTTP:KERSSL} !on [OR]
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule "^/?(.*)" "https://example.com/$1" [L,R=301]
lslqtz
2017-03-03 23:09:28 +08:00
@hqfzone 这问题
很怪.....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/343777

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX