使用nginx,你如何为不同的用户代理服务不同的静态文件? 例如,如果当前用户正在使用iPhone,则应将其提供mobile_index.html ,而其他所有用户代理都应该提供browser_index.html 。
find解决scheme
server { listen 80; root /var/www; set $mobile_request '0'; if ($http_user_agent ~ 'iPhone') { set $mobile_request '1'; } location =/ { if ($mobile_request = '1') { rewrite ^ /mobile_index.html; } if ($mobile_request = '0') { rewrite ^ /browser_index.html; } } }
如果你有一个足够新的nginx版本(0.9.6+),你可以用map来完成:
map $http_user_agent $myindex { default /browser_index.html; ~iPhone /mobile_index.html; } server { listen 80; root /var/www; location = / { rewrite ^ $myindex; } }
如果你不需要内部redirect(如果你只是为索引提供静态文件,那么你可能不需要),你可以在重写时添加一个“break”标志并避免内部redirect。
编辑:如果你使用的是旧版本,你可以这样做:
server { listen 80; root /var/www; location = / { set $myindex /browser_index.html; if ($http_user_agent ~ iPhone) { set $myindex /mobile_index.html; } rewrite ^ $myindex; } }
再次,如果你不需要内部redirect使用中断标志。