4

我需要将使用移动用户代理的任何人重定向到名为 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:

我使用了主机站点上的说明

我将其粘贴到他们的控制台中,它可以进行重定向。网络注册表有一些你提交的奇怪的控制台东西,更新 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 的任何想法?

宙斯官方文档

4

1 回答 1

0

通过更改修复它

   set OUT:Location = /mobile.php

   set URL = /mobile.php

来自手册... 使用请求重写脚本 要使用请求重写功能,请在 Zeus 请求重写脚本语言中创建一个脚本。该脚本包含告诉虚拟服务器如何更改与指定条件匹配的请求的 URL 或标头的说明。虚拟服务器编译脚本,并且(如果启用了重写功能)每次收到请求时都会使用它。它运行脚本中的命令,如果 URL 匹配指定的条件,则更改 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 如果匹配 set URL=/newsales/$1.html 重写功能还可以更改随请求接收的 HTTP 标头,并创建新的 HTTP 标头以返回给用户。例如,以下脚本更改 HTTP 主机标头,以便将对 www.mysite.com/subserver 的请求重定向到子服务器 www.subserver.mysite.com: match URL into $ with ^/([^/]+ )/(. )$ 如果匹配则设置 IN:Host = www.$1.mysite.com set URL = /$2 endif

于 2012-02-02T00:15:29.827 回答