我想让PC和移动设备加载不同索引的文件。
所以,在nginx主“位置”之前,我尝试像这样创建一个“if”:
# START MOBILE
if ($http_user_agent ~* "(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino") {
location / {
try_files /my/dir/here/index-mobile.html $uri $uri/ /index.php ;
}
}
但是,我得到“nginx:[emerg]”位置“指令不允许在这里”。因为在if中不允许位置,为了实现nginx为不同条件提供不同文件的方向是什么?
答案 0 :(得分:1)
问题如下所示:location
内不允许使用if
指令。在if
指令中实际上只有一些安全的事情可做,例如rewrite
和return
。有关更详细的information,请参阅文档。文档中没有提及的是,在某些条件下set
也可以安全使用。
在您的具体情况下,请尝试以下方法:
if ($http_user_agent ~* android) {
rewrite ^ /mobile/$request_uri last; # internal rewrite
}
location /mobile {
}
请注意,我尚未验证您的正则表达式。我相信你可以根据自己的需要进行调整。