我试图更好地理解 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
, …