.htaccess 301重定向无法正常工作

.htaccess 301重定向无法正常工作,.htaccess,redirect,.htaccess,Redirect,我想将每个请求从http://重定向到https://,并从www.example.com重定向到example.com。此外,从IP地址重定向到https://example.com太棒了 我设法将http://请求重定向到https://,但不幸的是,我总是无法将www重定向到非www站点 这是我的密码 RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

我想将每个请求从
http://
重定向到
https://
,并从
www.example.com
重定向到
example.com
。此外,从IP地址重定向到
https://example.com
太棒了

我设法将
http://
请求重定向到
https://
,但不幸的是,我总是无法将www重定向到非www站点

这是我的密码

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} ^www.example.com/foo2 [NC]
RewriteRule ^(.*)$ https://example.com/foo2/$1 [L,R=301]
知道它为什么不起作用吗。如何正确重定向IP地址

HTTP_主机
实际上只是主机名,而不是主机名加路径(即
/foo2
)。您在评论中提到站点(和.htaccess文件)位于子目录(
/foo2
)中,因此以下内容就足够了:

RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule (.*) https://example.com/foo2/$1 [L,R=301]
上述条件表明,如果HTTP_主机启动
www.
,则重定向

从IP地址重定向到
https://example.com
太棒了

如上所述,您只需检查
HTTP\u主机
中的IP地址。例如:

RewriteCond %{HTTP_HOST} =123.123.123.123
RewriteRule (.*) https://example.com/foo2/$1 [L,R=301]
RewriteEngine On
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^www\. [OR,NC]
RewriteCond %{HTTP_HOST} =123.123.123.123
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
使用
=
操作符,检查字典是否相等,即不是正则表达式,因此无需转义点

所有3个实例的组合规则。。。 然而,这一切都可以组合成一个更紧凑的单一规则集。例如:

RewriteCond %{HTTP_HOST} =123.123.123.123
RewriteRule (.*) https://example.com/foo2/$1 [L,R=301]
RewriteEngine On
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^www\. [OR,NC]
RewriteCond %{HTTP_HOST} =123.123.123.123
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]

如果请求不是HTTPS,或者以
www.
开头,或者是服务器的IP地址,则重定向…

非常感谢,组合规则可以正常工作。PS:我确实需要子目录,因为网站位于其中。这个.htaccess文件也位于该子目录中吗?(或者在文档根目录中?)它位于子目录“它工作了一段时间”-这听起来像是缓存问题?(301重定向将由浏览器缓存,包括以前出错的重定向。)或者可能与现有指令冲突?您的.htaccess文件中还有其他内容吗?或任何其他.htaccess文件?上述指令本身不应导致重定向循环。顺便说一句,如果您删除IP地址检查的
RewriteCond
,那么您还应该删除前面
RewriteCond
指令中的
标志。我是个白痴。。。出现问题是因为我忘了卸下OR。我仍然需要学习很多来编写.htaccess文件。。。非常感谢你的帮助!