Bra*_*rad 30 .htaccess redirect
我想将任何流向http://example.com的流量重定向到https://example.com
同样适用于http://example.com/about至https://example.com/about
我以为会是这样的:
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
Bor*_*lid 70
这对我有用:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Run Code Online (Sandbox Code Playgroud)
如果流量通过非SSL HTTP传入,则重定向到与用户最初尝试访问的任何页面等效的HTTP.它也不涉及任何mod_rewrite选项,因此它易于阅读.
旁听:为什么每个人都觉得需要明确设置重定向的HTTP代码并将其中一个重写标记为"最后一个"?说真的,我在过去的几天里看到了几十个相同的htaccess规则.
eis*_*eis 12
这是使用.httaccess的先前答案,但添加了评论中提出的更改,以及一些来自我:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://my.domain.name%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
笔记:
%{HTTPS}未设置off为null,但为null,因此!on规则更可靠off.%{SERVER_NAME}.如果您考虑使用它,请查看此讨论中的警告- 它依赖于其他配置是否正确.R=301意味着它是永久重定向,因为它通常意味着在这种情况下.如果您认为它是临时的,那么可以省略或指定为R=302.L表示它是应用此请求的最后一条规则.如果您怀疑或知道此后还有其他规则您不想申请,请保留.如果这是文件的唯一规则,则可以删除.小智 7
根据Apache文档,使用mod_alias比mod_rewrite此任务更合适.也就是说,为了将所有HTTP流量重定向到HTTPS,可以:
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / https://www.example.com/
</VirtualHost >
<VirtualHost *:443>
ServerName www.example.com
# ... SSL configuration goes here
</VirtualHost >
Run Code Online (Sandbox Code Playgroud)
有关此配置的两点注意事项:
VirtualHost指令仅在"服务器配置"上下文中有效.mod_rewrite指令在mod_alias指令之前处理.如果您的文件中已经有大量的RewriteRules .htaccess,那么mod_rewrite配置可能会更好.