我与m a -> t m a
有一个奇怪的问题。我的网站设置方式使用户可以通过return
之类的网址访问网页的翻译版本,或只访问正常页面t m
,以实现此目的我有以下内容在我的@Pipe({
name: 'sort',
})
export class SortPipe implements PipeTransform {
transform(array: any[], field: string): any[] {
return array.sort((a, b) => a[field].toLowerCase() !== b[field].toLowerCase() ? a[field].toLowerCase() < b[field].toLowerCase() ? -1 : 1 : 0);
}
}
:
<Rectangle x:Name="ImageRect" ...>
<Rectangle.Fill>
<ImageBrush ImageSource="/Images/close.ico"/>
</Rectangle.Fill>
</Rectangle>
<Rectangle ...>
<Rectangle.Style>
<Style TargetType="Rectangle">
<Setter Property="Fill" Value="#f9b129"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsMouseOver, ElementName=ImageRect}"
Value="True">
<Setter Property="Fill" Value="#fbc86A"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
在我的开发机器中,我使用Apache 2.4.29运行XAMPP 3.2.2,在我的生产服务器中,我使用Apache 2.4.18运行Ubuntu 16.04.3 LTS。在我的开发机器中,一切正常,如果我尝试访问mod_rewrite
它会显示example.com/pt/about
,如果我尝试example.com/about
它会将页面翻译为葡萄牙语,因为这是正确的行为,但在生产服务器,如果我尝试访问.htaccess
我收到404错误,但如果我尝试访问RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(en|pt)/?$ index.php?lang=$1 [NC,QSA,L]
RewriteRule ^about/?$ about.php [NC,QSA,L]
RewriteRule ^contact/?$ contact.php [NC,QSA,L]
RewriteRule ^([A-Za-z]{2})/about/?$ about.php?lang=$1 [NC,QSA,L]
RewriteRule ^([A-Za-z]{2})/contact/?$ contact.php?lang=$1 [NC,QSA,L]
,它会正确显示页面而不会出现任何问题。
为什么会发生这种情况以及如何纠正呢?
答案 0 :(得分:1)
RewriteBase指令指定用于替换相对路径的每个目录(htaccess)RewriteRule指令的URL前缀。
在每个目录(htaccess)上下文中使用替换中的相对路径时,此指令是必需的,除非满足以下任一条件:
我认为问题在于配置的差异,它会通过在您的代码中添加RewriteBase /
来解决,所以它应该是这样的:
RewriteEngine On
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(en|pt)/?$ index.php?lang=$1 [NC,QSA,L]
RewriteRule ^about/?$ about.php [NC,QSA,L]
RewriteRule ^contact/?$ contact.php [NC,QSA,L]
RewriteRule ^([A-Za-z]{2})/about/?$ about.php?lang=$1 [NC,QSA,L]
RewriteRule ^([A-Za-z]{2})/contact/?$ contact.php?lang=$1 [NC,QSA,L]