有人可以在上述情况下为我提供帮助吗?
1,http到https
所有访问权限必须更改为https://~
1个主机(www和ex1〜3)中有2个,4个子域
www.example.com,ex1.example.com,ex2.example.com,ex3.example.com
3,没有子域使用URI重定向到www
https://example.com/dir/必须更改为https://www.example.com/dir/
我在/etc/httpd/conf.d/
中有这个rewrite.conf。现在我将https://example.com/dir/设为https://www.example.com,但对此没有解决方案。
希望有人会帮助我解决这个问题。
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !^(www|ex1|ex2|ex3)\.example\.com [NC]
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^/(.*)$ https://www.example.com/$1 [R=301,L]
服务器版本:Apache / 2.2.34(Unix), Amazon Linux AMI版本2018.03
答案 0 :(得分:0)
第一条规则正在作为[Last]处理,没有达到第二条规则将htts://example.com/dir/重定向到www。版。尝试将它们切换:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www|ex1|ex2|ex3)\.example\.com [NC]
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
此外,您不能在apache 2中使用前面的斜杠。您应该像上面一样删除它,或者如果曾经使用过apache 1,则可以选择匹配它:
RewriteRule ^/?(.*)$ https://www.example.com/$1 [R,L]
此外,我建议制作所有重定向标志[R = 302],直到您确认它们正在起作用以防止在重定向上缓存问题。