仅针对特定 URL 重定向到 SSL

仅针对特定 URL 重定向到 SSL

我想通过仅针对某些 URL 模式进行重定向来强制使用 SSL www。

例如,

强制 SSL www 重定向:

http://example.com/asia/fewf -> https://www.example/asia/fewfwe
http://example.com/africa/foo/bar/1/ -> https://www.example/africa/foo/bar/1/

不要做任何事情:

http://example.com/europe/1 -> http://example.com/europe/1
http://www.example.com/europe/1 -> http://www.example.com/europe/1

我尝试添加这个:

RedirectMatch 301 ^(/asia[^/]*/.*)$ https://www.example.com$1

但是,它会导致错误:“重定向太多”

答案1

我认为您收到过多重定向的原因是,即使 URL 以 https 请求,RedirectMatch 也会触发,因此即使它已经变成 https,它也会一遍又一遍地重定向。

我建议使用 mod_rewrite 来解决这个问题。例如:

RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule %{REQUEST_URI} ^(/asia[^/]*/.*)$ https://www.example.com$1 [R=301,L]

当您进行测试时,我建议您不要R=301使用 ,而只使用 ,R因为这样不会导致浏览器永久缓存重定向,从而让故障排除变得复杂。

相关内容