产品服务AMH 免费服务器主机面板SSL证书 免费SSL证书申请 担保单 免费安全、零费率交易平台编程助手免费智能写代码、翻译AMYSQL 免费MySQL管理工具

AMH 社区首页

 AMH社区 - 开放自由有价值的社区

[求助帖] 如何限制指定浏览器语言和指定时区的访问

seovery
铜牌会员
799.00 价值分

seovery 发表于 2013-07-10 17:04:12
网站想限制指定浏览器语言和时区访问,应该如何写nginx的conf文件或者apache的htacces文件?请高手帮忙。

比如:
指定浏览器语言:日文
指定时区:9时区



2013-07-10 17:04:12 1

amysql
创始人
16530.81 价值分

可以根据Nginx的$http_accept_language变量
判断。或也可以在程序上做判断。
  支持 (0分)  反对 (0分)
回复  2013-07-10 17:19:02 2

AMH面板 - 好用高效低占用、安全可靠极稳定

seovery
铜牌会员
799.00 价值分

引用:
amysql 发表于 2013-7-10 17:19
可以根据Nginx的$http_accept_language变量
判断。或也可以在程序上做判断。


只希望用 nginx conf版本的,可以全局控制,

语言的是怎么样写的吧
if ( $http_accept_language ~* ^[^ja])
{
return 404; #非日文用户访问网站返回404
}

时区的应该怎么写呢?
  支持 (0分)  反对 (0分)
回复  2013-07-10 17:21:47 3

amysql
创始人
16530.81 价值分

引用:
seovery 发表于 2013-7-10 17:21
只希望用 nginx conf版本的,可以全局控制,

语言的是怎么样写的吧


用户时区服务端有方法获取?
  支持 (0分)  反对 (0分)
回复  2013-07-10 22:27:11 4

seovery
铜牌会员
799.00 价值分

引用:
amysql 发表于 2013-7-10 22:27
用户时区服务端有方法获取?


没有找到时区的获取方法

js的方法有:

//Time Zone
function calcTime(city, offset) {
d = new Date();
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
nd = new Date(utc + (3600000 * offset));
if (d.toLocaleString() == nd.toLocaleString()) {
window.location.href = "http://www.google.com";
}
return "The local time in " + city + " is " + nd.toLocaleString();
}
calcTime('Singapore', '+8');
  支持 (0分)  反对 (0分)
回复  2013-07-10 22:54:50 5

amysql
创始人
16530.81 价值分

JS是客户端了。
  支持 (0分)  反对 (0分)
回复  2013-07-10 23:02:10 6

来自未来的家伙
铜牌会员
835.83 价值分

if ( $http_accept_language ~* ^[^ja])
{
return 404; #非日文用户访问网站返回404
}
学习了,我一直都是用php

<?php
error_reporting(E_ALL ^ E_NOTICE);
preg_match('/^([a-zA-Z\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
$lang = $matches[1];
switch ($lang) {
case 'zh-CN' :
case 'zh-cn' :
case 'zh-TW' :
case 'zh-tw' :
header("HTTP/1.1 301 Moved Permanently");
header('Location:http://amysql.com');
break;
?>
而且不会用正则。。。只能一个个写。。。

  支持 (0分)  反对 (0分)
回复  2013-07-11 15:20:01 7

来自未来的家伙
铜牌会员
835.83 价值分

有一种说法是用geo获取ip然后用ip判断地理位置,地理位置获取时区。思路应该不错。
  支持 (0分)  反对 (0分)
回复  2013-07-11 15:27:21 8

amysql
创始人
16530.81 价值分

引用:
来自未来的家伙 发表于 2013-7-11 15:27
有一种说法是用geo获取ip然后用ip判断地理位置,地理位置获取时区。思路应该不错。 ...


间接方法。
  支持 (0分)  反对 (0分)
回复  2013-07-11 15:33:52 9

来自未来的家伙
铜牌会员
835.83 价值分

引用:
amysql 发表于 2013-7-11 15:33
间接方法。


http://www.php.net/manual/en/function.geoip-time-zone-by-country-and-region.php

这个方法应该算直接了,但是是php的没用到nginx。
  支持 (0分)  反对 (0分)
回复  2013-07-11 15:55:03 10
 1 2 >  (总2页)
AMH社区列表
用户服务中心