我的nginx配置中有以下位置:
<TreeView Grid.Column="0" Width="Auto" Background="Aquamarine" ItemsSource="{Binding Scenes}"
SelectedItemChanged="TreeView_SelectedItemChanged">
<TreeView.DataContext>
<viewModels:ScenesViewModel />
</TreeView.DataContext>
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:SceneViewModel}" ItemsSource="{Binding Characters}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding SceneName}"></TextBlock>
<Image Source="{StaticResource ImgWorld}" Margin="0,0,5,0" Width="32" Height="32"/>
</StackPanel>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type local:CharacterViewModel}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding FirstName}"></TextBlock>
<Border BorderThickness="1" Background="RoyalBlue">
<Image Source="{Binding ImgIcon}" Margin="2"/>
</Border>
</StackPanel>
</DataTemplate>
</TreeView.Resources>
</TreeView>
我正在尝试将/ api与最新版本匹配,并将/&lt; version&gt; / api与其他任何内容匹配。非正则表达位置工作正常,但我在另一个位置得到403.
我认为这与正在提供的文件和权限无关,因为如果我尝试访问
,我会收到403server {
listen 80;
server_name localhost;
location ~ ^/(?!api)(.*)/api {
alias /var/www/api/$1;
}
location /api {
alias /var/www/api/latest;
}
即使这些文件与
提供的文件相同/latest/api
有没有人知道为什么我会收到403?
nginx错误是:
/api
答案 0 :(得分:2)
问题不在于正则表达式,而是在正则表达式alias
中使用location
指令。有关详情,请参阅this document。
在相关说明中,您应该使用前缀^~
上的location
修饰符,而不是使用否定前瞻断言。有关详情,请参阅this document。
例如:
location ~ ^(/[^/]+)/api(.*)$ {
alias /var/www/api$1$2;
}
location ^~ /api {
alias /var/www/api/latest;
}