Rob*_*gas 8 http httpd.conf redirect apache-2.4
全部。我有语法问题。我尝试过遵循其他来源,但它不起作用。
我已成功创建无条件 HTTP 到 HTTPS 重定向。访问http://www.robjvargas.com,以 HTTPS 结束。那里一切都很好。
但现在我的证书似乎需要HTTP。它使用 Let's Encrypt,因此需要每 90 天更新一次。重定向生效后,试运行会失败。关闭重定向后,试运行就会成功。
所以我尝试放入 RewriteCond 来免除证书续订流量:
# HTTP to HTTPS redirect
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{Request_URI} !^./acme-challenge/*
RewriteRule (.*) https://www.robjvargas.com$1 [R,L]
Run Code Online (Sandbox Code Playgroud)
只是它不起作用。我想我错过了一些值得我一看到就拍额头的东西,但我没有看到它。通过上面的代码,HTTP 到 HTTPS 的重定向似乎仍然是通用的。因此,显然 RewriteCond 是不正确的。URI 之前的句点可能是错误的,但我已经尝试过使用和不使用它。
我还将完整的 URI 放入 RewriteCond 中,但这也没有免除它。
快到了。我没有收到任何错误。它只是永远不会满足预期的条件。
我缺少什么?
但现在我的证书似乎需要HTTP。
这不太正确。我个人通过 https 进行更新。但是,为了使其正常工作,您需要通过从 http VirtualHost 复制相关部分来确保允许访问 https VirtualHost 中的质询 URI。如果您不能或不想这样做,以下是如何使用您开始编写的条件重定向使其通过 http 工作。
问题是您当前的正则表达式将与挑战 URI 匹配。根据Apache 文档, REQUEST_URI 以 / 开头,因此您应该像这样查找质询 uri:^\/\.well-known\/.*$。这将匹配挑战 URI ( http://example.com/.well-known/acme-challenge )。
全部放在一起:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^\/\.well-known\/.*$
RewriteRule (.*) https://www.robjvargas.com/$1 [R,L]
Run Code Online (Sandbox Code Playgroud)
如果将来出现问题,请使用这个:htaccess tester
| 归档时间: |
|
| 查看次数: |
7338 次 |
| 最近记录: |