为服务器‘Zeus’合并 WordPress 和子域重写规则

为服务器‘Zeus’合并 WordPress 和子域重写规则

目前,我正在使用 Zeus 服务器,我们有一个使用 Wordpress 开发的网站。Zeus 服务器不支持安装 wordpress 和 SEO 所需的 .htaccess 文件。但是,我们可以通过定义一些重写规则来管理 Zeus 以完成我们的任务。

对于 WordPress,我们目前使用以下重写规则:

RULE_0_START:

# get the document root

map path into SCRATCH:DOCROOT from /
# initialize our variables
set SCRATCH:ORIG_URL = %{URL}
set SCRATCH:REQUEST_URI = %{URL}

# see if theres any queries in our URL
match URL into $ with ^(.*)\?(.*)$
if matched then
set SCRATCH:REQUEST_URI = $1
set SCRATCH:QUERY_STRING = $2
endif
RULE_0_END:

RULE_1_START:
# prepare to search for file, rewrite if its not found
set SCRATCH:REQUEST_FILENAME = %{SCRATCH:DOCROOT}
set SCRATCH:REQUEST_FILENAME . %{SCRATCH:REQUEST_URI}

# check to see if the file requested is an actual file or
# a directory with possibly an index. don?EUR(TM)t rewrite if so
look for file at %{SCRATCH:REQUEST_FILENAME}
if not exists then
look for dir at %{SCRATCH:REQUEST_FILENAME}
if not exists then
set URL = /index.php?q=%{SCRATCH:REQUEST_URI}
goto QSA_RULE_START
endif
endif

# if we made it here then its a file or dir and no rewrite
goto END
RULE_1_END:

QSA_RULE_START:
# append the query string if there was one originally
# the same as [QSA,L] for apache
match SCRATCH:ORIG_URL into % with \?(.*)$
if matched then
set URL = %{URL}&%{SCRATCH:QUERY_STRING}
endif
goto END
QSA_RULE_END:

我们的项目需要一个子域名:

我们的托管服务提供商“netregistry.com.au”不基于 Cpanel,这让我们设置子域名变得更加困难。Netregistry 提供了一个教程来指导我们设置子域名。

http://www.netregistry.com.au/support/articles/create-a-subdomain-to-point-to-a-directory

但是,为了使子域名正常工作,我们需要为服务器 Zeus 添加一些重写规则。

我们需要添加以下重写规则

RULE_1_START:
insensitive match IN:Host into % with ^www.example.com.au
if  matched then goto END
RULE_1_END:

RULE_2_START:
insensitive  match IN:Host into % with ^(.*).example.com.au
if matched then match URL  into $ with ^/(.*)
if not matched then goto RULE_2_END
set URL =  /%1/$1
RULE_2_END:

问题是我们已经为 Wordpress 编写了规则 1。如果我们再次放置规则 1,服务器将忽略规则 1。有人知道我们如何组合重写规则吗?

请帮助我们将 WordPress 和子域重写规则结合在一起

答案1

我已经修复了!!我也遇到了这个问题。我刚刚对宙斯规则有了更多的了解,并创建了自己的组合。查看我对根站点中的子域和 wp 的解决方案:

规则 3 开始:
不敏感匹配 IN:Host 到 % 中带有 ^www.myexample.com
如果匹配则转到 RULE_2_END
规则 3 结束:

规则 2 开始:
不敏感匹配 IN:Host 到 % 中带有 ^(.*).myexample.com
如果匹配则将 URL 匹配到 $ 中,并使用 ^/(.*)
如果不匹配则转到 RULE_2_END
设置 URL = /%1/$1
规则2结束:


规则 0 开始:
# 获取文档根目录
将路径映射到 SCRATCH:DOCROOT 从 /
# 初始化变量
设置 SCRATCH:ORIG_URL = %{URL}
设置 SCRATCH:REQUEST_URI = %{URL}

# 查看我们的 URL 中是否有任何查询
使用 ^(.*)\?(.*)$ 将 URL 与 $ 进行匹配
如果匹配则
设置 SCRATCH:REQUEST_URI = $1
设置 SCRATCH:QUERY_STRING = $2
万一
规则 0 结束:

规则 1 开始:
# 准备搜索文件,若未找到则重写
设置 SCRATCH:REQUEST_FILENAME = %{SCRATCH:DOCROOT}
设置 SCRATCH:REQUEST_FILENAME . %{SCRATCH:REQUEST_URI}

# 检查请求的文件是否是实际文件或
# 可能带有索引的目录。如果是的话,不要重写
在 %{SCRATCH:REQUEST_FILENAME} 查找文件
如果不存在则
在 %{SCRATCH:REQUEST_FILENAME} 处查找目录
如果不存在则
设置 URL = /index.php?q=%{SCRATCH:REQUEST_URI}
转到 QSA_RULE_START
万一
万一

# 如果我们在这里创建了它,那么它就是一个文件或目录,无需重写
转到结束
规则 1 结束:

QSA_RULE_START:
# 如果原来有查询字符串,则附加该字符串
# 与 Apache 的 [QSA,L] 相同
将 SCRATCH:ORIG_URL 与 % 和 \?(.*)$ 进行匹配
如果匹配则
设置 URL = %{URL}&%{SCRATCH:QUERY_STRING}
万一
转到结束
QSA_规则结束:

规则名称不需要与服务器示例使用相同的名称,只需确保规则具有正确的关系即可。我希望这个解决方案有用。

相关内容