首页 > 学技术 > 技术网文 > Web服务器 > 正文

[精彩] 怎么让apache根据不同的http头转向不同的url?


来源 chinaunix.net 酷勤网整理

比如根据http信息得到浏览器是IE,还是NetScape,然后转向不同的页面 
能象程序那样获得http头的信息吗?然后根据头信息转向不同的页面吗?



 aspbiz 回复于:2004-10-26 22:36:03

应该可以的,关注。


 abel 回复于:2004-10-27 00:15:52

By different Agent:

RewriteCond %{HTTP_USER_AGENT}  ^Mozilla/3.*
RewriteRule ^index\..*$         moz.html          [L]

RewriteCond %{HTTP_USER_AGENT}  ^Lynx/.*         [OR]                    
RewriteCond %{HTTP_USER_AGENT}  ^Mozilla/[12].*
RewriteRule ^index\..*$         lyx_moz.html          [L]


or by different Language

RewriteCond %{HTTP:Accept-Language} gb2312 [NC]
RewriteRule .*index\.html$ www.domain.com/gb/index.php
RewriteCond %{HTTP:Accept-Language} UTF-8 [NC]
RewriteRule .*index\.html$ www.domain.com/utf-8/index.php



所以絕大多數的 $_SERVER ($ENV) 都可以 rewrite rule


 Fun-FreeBSD 回复于:2004-10-27 11:00:36

不好意思,刚开始考虑不周全,是这样的
我们有两种手机,两种手机使用不同的的mime.types对应同一个123.mmf文件:

application/vnd.smaf       mmf
application/x-smaf           mmf


但是只有后边的application/x-smaf  mmf生效,我想根据不同的user-agent对应不同的mime.types,实现这样的功能:

if   {user-agent=NEC } 
then
    application/vnd.smaf       mmf
else
    application/x-smaf           mmf
fi



 zjzf_1 回复于:2004-10-28 09:20:06

借助php也可以实现


 Fun-FreeBSD 回复于:2004-10-28 11:27:19

这是我的配置


RewriteEngine on
RewriteCond  %{HTTP_USER_AGENT}  .*NEC-N810*
RewriteRule  ^/test/(.*)\.mmf /test/$1\.mmf  [R,T=application/x-smaf]


显示403错误,被禁止了,阿宝哥,帮帮忙,给个提示吧 :(


 abel 回复于:2004-10-28 11:43:27

Rewrite Rule 根據不同的 AGENT, 導到不同的目錄或 VH 上
再該目錄或 vh 上設
AddType Application .... 
來定義,這樣應該可以吧
我沒有試過,但就觀念來說應該是可行的


 czj875 回复于:2004-10-28 12:35:42

俺来好好学学```


 Fun-FreeBSD 回复于:2004-10-28 12:42:02

我做个了转向就可以了,不知道上边的那个为什么不行 


RewriteEngine on
RewriteCond   %{HTTP_USER_AGENT}   .*NEC-N810*
RewriteRule  ^/test/(.*) /test_netc/$1    [PT]
Alias  /test_nec/   "/usr/local/apache/htdocs/res/test/"
<Location  /test_nec>;
  ForceType   application/x-smaf
</Location>;



 Fun-FreeBSD 回复于:2004-10-28 12:50:21

引用:原帖由 "abel" 发表:
Rewrite Rule 根據不同的 AGENT, 導到不同的目錄或 VH 上
再該目錄或 vh 上設
AddType Application .... 
來定義,這樣應該可以吧
我沒有試過,但就觀念來說應該是可行的



可是我的文件是一个地方,一个目录,一个VH,同一个文件,但是这个文件要根据两种手机类型匹配两种不同的mime.type
如果我在目录或者VH里加AddType Application .... 那两种手机都会用同一个mime.type
我想把http://x.x.x/abc根据手机类型分类,然后再定向到自己,而不是另外的目录

不知道我表达清楚没有


 Fun-FreeBSD 回复于:2004-10-29 20:35:21

我又想了种方法,把文件后缀改了,不知道行不行,明天试试


AddType application/x-smaf  .nec
AddType application/vnd.smaf  .mmf

RewriteEngine on
RewriteCond   %{HTTP_USER_AGENT}   .*NEC-N810*
RewriteRule   ^/(.*)\.mmf   /$1\.nec   [NC,T=application/x-smaf]



 wingger 回复于:2004-10-29 21:50:18

不好意思,我不太懂

是不是可以用程序实现呢?

用程序来判断是什么agent,再跳转??? :oops:  :oops:  :oops:


 HonestQiao 回复于:2004-10-30 09:24:44

用程序很好作的啊,无非是一个环境变量可以查到的。

如果使用php,phpinfo()可以看到$_SERVER[USER_AGENT]


 Fun-FreeBSD 回复于:2004-10-30 23:37:31

写程序的跟写铃声的没在一起,写完了才发现这个问题的,只好在服务器上解决了


 KindGeorge 回复于:2004-11-29 08:21:23

很好的话题


 bens 回复于:2005-04-22 00:47:13

我也遇到了同样的问题,也是NEC-N8手机的问题,据说可以在服务器上可以实现适配!兄弟您是否解决次问题 !十万火急!老总都急了:(他用的就是nec-n8
我改了mime.types可是S208又不可以了:(跪地求救!


 xjau_yzq 回复于:2005-04-22 10:26:59

好像用虚拟主机就可以实现


 zhangweibo 回复于:2005-07-14 11:43:18

自己定义一个后缀就行呀,反正铃声下载后,手机能认出他是smaf文件,照样能播放,我就是这么解决的,我想做sp的管理员都会碰到这个问题,嘿嘿

[ 本帖最后由 zhangweibo 于 2006-3-16 17:45 编辑 ]


 phphp 回复于:2005-07-16 20:56:56

学习中...


 _meme 回复于:2005-07-17 08:09:37

引用:原帖由 "wingger" 发表:
不好意思,我不太懂

是不是可以用程序实现呢?

用程序来判断是什么agent,再跳转??? :oops:  :oops:  :oops:



嗯, 用agent判断是相当标准的做法...... :em03:  :em03:  :em03:


 chlinux 回复于:2006-03-15 13:19:32

不知楼主最后是怎么解决这个问题的,我也在想通过apache的环境配置来实现这样的功能,不想用程序的方式,用程序的方式我也解决了有些mid/midi的下载问题,同样的问题又发生在了mmf格式的下载上了,很头疼,如果能通过环境配置来解决是最方便的了,如果改文件的扩展名,或者通过程序来针对不同的UA来输出不同的头Content-Type都比较麻烦。




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=432587
转载请注明作者名及原文出处



收藏本页到: