.htaccess mod_rewrite不适用于http://但不适用于http://www

.htaccess mod_rewrite不适用于http://但不适用于http://www,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我有以下代码: #### Redirect to www location RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^sspconf.com [NC] RewriteRule ^(.*)$ https://www.sspconf.com/$1 [R=301,NC] 当我输入时,它会重新指向哪个是好的 但是,如果我键入(www),它不会直接显示。有人能帮忙吗?将规则更改为: RewriteEngine on Rewrit

我有以下代码:

####  Redirect to www location

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^sspconf.com [NC]
RewriteRule ^(.*)$ https://www.sspconf.com/$1 [R=301,NC]
当我输入时,它会重新指向哪个是好的

但是,如果我键入(www),它不会直接显示。有人能帮忙吗?

将规则更改为:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^sspconf.com [NC,OR]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.sspconf.com/$1 [R=301,NC]
因此,如果它缺少“www”或不是HTTPS,它将重定向。

添加此行:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^sspconf.com [NC]
并更改此行:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^sspconf.com [NC]
为此:

RewriteCond %{HTTP_HOST} ^(www\.)?sspconf.com [NC]
^
只匹配字符串的开头,因此
www.sspconf.com
不匹配

因此,您的总体规则如下所示:

####  Redirect to www location

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?sspconf.com [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.sspconf.com/$1 [R=301,NC]

以下内容已解决我的问题,谢谢您的帮助

# Force SSL on entire site

RewriteEngine On
RewriteBase /
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteRule ^(.*)$ https://www.sspconf.com/$1 [R,L]

这可能不是OP想要的。如果请求了另一个域,如
blog.sspconf.com
,该怎么办?遗憾的是,这给了我一个无限循环。不需要blog。@AndyWebb你确定没有其他重定向(其他规则、php代码等)吗?这些规则对我有效,没有无限循环。@Jon Lin-我试过两次,网站本身很简单,没有其他。htaccess重定向或php重定向。遗憾的是,这给了我一个无限循环。除非我疯了,否则仍然是一个循环。我现在无法测试,但我认为上面的逻辑是正确的。您很可能对
R=301
有问题;尝试清除缓存。(测试时使用
302
重定向更安全,因为
301
应该是永久性的,所以浏览器通常会停止尝试原始URL,完全删除mod_rewrite。)这是.htaccess中的唯一规则还是您有更多规则?您是否正在使用一些PHP/CMS框架?