我试图更好地理解 nginx 并尝试形成一个正则表达式,其中每个不匹配的 url 都/api/postdataV1被路由到不同的服务器集群。我一直在例子中看到这两件事,没有解释
location ~ {some regex}
location ~* (some regex}
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是这些是什么~和~*(我认为~只是意味着我指定一个正则表达式?),但怎么样~*呢?
我想我想要的是这个。这是正确的吗?
location ~ ^/api/postdataV1$ {
#matches to this route to where I want
}
location / {
#This will be everything except /api/postdataV1 I think
}
Run Code Online (Sandbox Code Playgroud)
这是正确的吗?但是~*……我不明白那个
谢谢,院长
我正在编辑一个.htaccess文件..
在 RewriteRules 的 RewriteCondition 中,HTTPS_HOST似乎只匹配通过https://协议 (ssl)访问的 url 。我在某处的文档中看到它是一个 T/F 变量,指示是否使用安全协议访问了 url。
然而,我在上文档的麻烦发现是否HTTP_HOST只匹配http://协议,或者如果它有效地匹配//相对的协议,这意味着它符合双方 http:// 和 https://。
有人可以以一种或另一种方式确认,或向我指出此信息的明确来源吗?
此外,如果HTTP_HOST匹配两个协议变体,过滤仅 http://协议匹配的最佳方法是什么?
例子:
<IfModule mod_rewrite.c>
RewriteEngine on
Rewritecond %{HTTP_HOST} ^\/\.(?!some-url).*$
RewriteRule (.*) https://www.example.com/$1 [R=301,L,NC]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
相比之下:
...
Rewritecond %{HTTPS_HOST} ^\/\.(?!some-url).*$
...
Run Code Online (Sandbox Code Playgroud)
编辑:实验表明,HTTP_HOST 这似乎与两种协议都匹配,而HTTPS_HOST仅当协议或 url 以https://.
.
(注重:apache2标签
。TBH,我不能肯定我运行的是什么版本的Apache将尝试找出,这样我就可以装上适当的标签..
我想httpd -v,apache -v, …