Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检测Mac用户-htaccess_Php_.htaccess_Redirect - Fatal编程技术网

Php 检测Mac用户-htaccess

Php 检测Mac用户-htaccess,php,.htaccess,redirect,Php,.htaccess,Redirect,快速搜索揭示了许多关于如何检测iPhone或iPad的指南: RewriteEngine on RewriteCond %{HTTP_USER_AGENT} iPhone RewriteRule .* http://iphone.example.com/ [R] 但是有什么方法可以检测Mac用户(任何浏览器)并重定向他吗?Macintosh用户代理看起来像这样:Mozilla/5.0(Macintosh;U;PPC Mac OS X Mach-O;en-US;rv:1.7.12)Gecko/2

快速搜索揭示了许多关于如何检测iPhone或iPad的指南:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} iPhone
RewriteRule .* http://iphone.example.com/ [R]

但是有什么方法可以检测Mac用户(任何浏览器)并重定向他吗?

Macintosh用户代理看起来像这样:
Mozilla/5.0(Macintosh;U;PPC Mac OS X Mach-O;en-US;rv:1.7.12)Gecko/20050915 Firefox/1.0.7

据我所知,
RewriteCond%{HTTP\u USER\u AGENT}
将查找您给他的正则表达式。在上述情况下,如果他在用户代理中找到
iPhone
,条件测试将返回true。因此,应该可以这样做:

RewriteCond %{HTTP_USER_AGENT} Macintosh
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^ http://mac.example.com%{REQUEST_URI} [R]

希望这能起作用,也希望这能有所帮助:)

我想你可以做一些像RewriteCont%{Macintosh}mac@Stijn:嗯,不。Apache不提供这样的特定于操作系统的标记。您得到了一组特定的HTTP相关变量,就这样。@Nimbuz您最终做到了吗?有一个相关的问题:这可能是由于您的重写规则。我已经在我的本地主机上测试了我答案中更新的规则,它运行得非常好。Make sur您的RewriteRule将首先工作,然后添加RewriteCond。在我的代码片段中,我将Mac上所有试图浏览我的www网站的用户重定向到Mac子域。您还可以将download.html重定向到download-mac.html或其他内容。。。但这似乎有点刺耳。您的具体使用案例是什么?这将不起作用,因为您首先将
www.domain.com
mac.domain.com
重定向到
domain.com
(第5行),因此,您将永远无法捕获
www.domain.com
,就像您在第16行尝试做的那样。你能给我你想用的真正的
.htaccess
吗?如果您在本地使用该假冒域名,请确保您有“*.domain.com”的主机路由。测试这个问题的一个快速修复方法是删除第4行和第5行。这就是我正在使用的htaccess。顺便说一句,删除这些行并添加您的行会使其进入重定向循环。