我正在尝试为我的apache服务器编写mod_rewrite规则。我的要求是我在服务器上有三个Web应用程序,其中所有对HTTP方案的请求都应该重定向到HTTPS。
这是我写的:
RewriteEngine On
RewriteCond $1 ^abc$ [NC]
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
这似乎没有正常工作。我正在尝试使用 abc
上下文根运行应用程序以在HTTP上运行,并将所有其他请求重定向到HTTPS URL。
谁能告诉我我做错了什么。
答案 0 :(得分:1)
我发现你的第一条规则有几个问题:
/abc
,而非abc
。我建议删除第一条规则,并将/ abc排除添加到第二条规则:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/abc$ [NC]
RewriteRule $ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
如果您还想强制/ abc使用HTTP而不是HTTPS,那么您可以添加第二条规则:
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/abc$ [NC]
RewriteRule $ http://%{HTTP_HOST}%{REQUEST_URI} [L,R]