我需要将使用移动用户代理的任何人重定向到名为mobile.php的文件。 我的网络托管服务提供商Net Registry使用Zeus网络服务器。
这是我从研究中写下的剧本
RULE_1_START:
# get the document root
map path into SCRATCH:DOCROOT from /
match IN:User-Agent into $ with iPad|iPod|iPhone|Android|s+Mobile
if matched then
set OUT:Location = /mobile.php
endif
RULE_1_END:
我使用了instructions on my host's site。
我将其粘贴到他们的控制台中,并且已经努力进行重定向。网络注册表有一些你提交的奇怪的控制台事情,更新zeus服务器配置需要10分钟(令人讨厌的地狱)。
无论如何,我的问题是它将我重定向到错误的位置:
因此,如果您访问该网站,并使用包含ipad|ipod|android|\s+mobile
的用户代理字符串,那么您将触发它()
我在这里:
http://example.com.au/mobile.php,%20catalog/index.php
我无法弄清楚如何解决这个问题,或者为什么会发生这种情况,因为目前这个文件存在:
http://example.com.au/mobile.php
就像这一样:
http://example.com.au/index.php. Contents of this file are:
<?php header("Location: catalog/index.php");
关于如何让这项工作更像是一个apache .htaccess url Rewrite的任何想法?
答案 0 :(得分:0)
通过更改
来修复它 set OUT:Location = /mobile.php
到
set URL = /mobile.php
从手册...... 使用请求重写脚本 要使用请求重写功能,请在Zeus请求中创建脚本 重写脚本语言。该脚本包含说明的说明 虚拟服务器如何更改符合指定条件的请求的URL或标头。 虚拟服务器编译脚本,并且(如果重写功能是 enabled)每次收到请求时都使用它。它运行命令 脚本,如果符合指定条件,则更改URL。一旦脚本是 完成后,虚拟服务器将继续处理生成的URL.Zeus Web Server 4.3用户指南 142配置URL处理 更改URL时,重写功能只能更改本地 它的一部分,即主机名后的URL部分。例如,如果是 用户请求http://www.myhost.com/sales/uk.html,重写 功能只能对/sales/uk.html进行更改。这意味着 您不能使用重写功能来更改请求引用的请求 另一台虚拟服务器上的文件 例如,以下脚本说明了如何更改任何请求 / sales目录中的HTML文件,以便用户从中接收它们 / newsales目录: 将URL与^ / sales /(。)。html匹配到$ 如果匹配设置URL = / newsales / $ 1.html 重写功能还可以更改收到的HTTP标头 使用请求,并创建要返回给用户的新HTTP标头。对于 例如,以下脚本更改HTTP主机头,以便进行请求 对于www.mysite.com/subserver,重定向到Subserver www.subserver.mysite.com: 将URL与$ /([^ /] +)/(。)$匹配 如果匹配的话 设置IN:Host = www。$ 1.mysite.com 设置URL = / $ 2 ENDIF