在子文件夹中检测浏览器后重定向

时间:2014-12-03 13:22:09

标签: javascript html .htaccess redirect detection

我确实有一个关于浏览器检测和重定向到其他网站的问题,分别是主页上的其他文件夹。

在我的客户网站上,我通过html元素插入了这个脚本:

<script>
var ua = navigator.userAgent.toLowerCase(); 
if (ua.indexOf('safari')!=-1){ 
   if(ua.indexOf('chrome')  > -1){
   }else{
   window.location.href = "sfindex.html" // saf
 }
}
</script>

现在,这会将用户重定向到另一个index.html,即sfindex.html,它没有应用更平滑的小部件(进一步称为某些功能)到其下载站点/链接。表示Safari用户将休闲到一个名为的目录 所有站点此文件夹不包含此特定功能。 sf表示safari,de表示德语。

所有其他浏览器继续使用标准文件夹。德语

只需 / de /

此文件夹下的所有页面都确实已启用此功能。 到现在为止还挺好。如果用户仅在主webadress上启动,则效果很好。

我现在要求您提供哪些帮助, / de / 文件夹页面中的代码需要如何重定向safari用户始终到相应的 sf / de / 页面。

我尝试使用上面的脚本来实现它,但我总是失败,因为它会将用户重定向到一个不存在的文件夹,例如sf / sf /意味着它总是再次添加子文件夹或将其遗漏在另一种配置中。

我也试过这个:

RewriteEngine on 

# Add /sf/ at the beginning, for safari user
RewriteCond %{HTTP_USER_AGENT} .*safari [NC]
RewriteCond %{REQUEST_FILENAME} \.html?$ [NC]
RewriteCond %{REQUEST_URI} !^/sf/ [NC]
RewriteRule ^(.*)$ /sf/$1   [R=302,L]

# Delete /sf/ for normal user
RewriteCond %{HTTP_USER_AGENT} !.*safari [NC]  
RewriteRule ^sf/(.*)$ /$1   [NC,R=302,L]

但是htaccess文件中的问题是它在Chrome和Opera中不起作用。它还将这些用户重定向到Safari子文件夹/ sf /任何线索来修复它?

非常感谢。 MacGee

1 个答案:

答案 0 :(得分:0)

在我放入htaccess文件的主文件夹中:

RewriteEngine on 

# Add /sf/ at the beginning, for safari user
RewriteCond %{HTTP_USER_AGENT} .*safari [NC]
RewriteCond %{REQUEST_FILENAME} \.html?$ [NC]
RewriteCond %{REQUEST_URI} !^/sf/ [NC]
RewriteRule ^(.*)$ /sf/$1   [R=302,L]

# Delete /sf/ for normal user
RewriteCond %{HTTP_USER_AGENT} !.*safari [NC]  
RewriteRule ^sf/(.*)$ /$1   [NC,R=302,L]