我有一个Joomla!设置多个域名用于一个Joomla实例的站点。站点的根域是www.pky.com。当访问我们购买的域名列表中的任何其他域名时,它们被定向到根域,但我正在使用php脚本通过测试URI来重定向到正在查看的“站点”的适当域名。用于该站点的一些urls是exampleone.pky.com、exampletwo.pky.com等。
站点的index.php文件中的重定向脚本设置如下:
<?php
$domain = $_SERVER["HTTP_HOST"];
$requri = $_SERVER['REQUEST_URI'];
if ((($domain == "pky.com") || ($domain == "www.pky.com") || ($domain == "citywestplace.pky.com") || ($domain == "www.citywestplace.pky.com") || ($domain == "gwplazahouston.com") || ($domain == "www.gwplazahouston.com") || ($domain == "greenwayplaza.pky.com") || ($domain == "www.greenwayplaza.pky.com") || ($domain == "postoakhouston.com") || ($domain == "www.postoakhouston.com") || ($domain == "postoakcentral.pky.com") || ($domain == "www.postoakcentral.pky.com") || ($domain == "sanfelipeplaza.com") || ($domain == "www.sanfelipeplaza.com") || ($domain == "sanfelipeplaza.pky.com") || ($domain == "www.sanfelipeplaza.pky.com")) && ($requri == "/index.php/citywestplace-marketing")) {
header("Status: 301 Moved Permanently");
header("Location: http://www.citywesthouston.com$requri");
}我们的一个主要问题是,进入foo.pky.com的人仍然会出现在网站上,这反过来又破坏了脚本。有没有办法将一个变量设置为一个正则表达式,它适合所有可能的字母、数字和其他字符的变体,然后使用该变量作为url的一部分,以便它也被重定向到根域?
例如:
$myvar = some regex here;
if (($domain == "pky.com") || ($domain == "www.pky.com") || ($domain == $myvar . ".pky.com") || ($domain == "www" . $myvar . ".pky.com"))...肯定有更好的方法来做这一切,但我仍在学习。
提前谢谢你。
编辑
所以我加了一句:
if (((preg_match(`.*\.pky\.com`, $domain)) || (preg_match(`www\..*\.pky\.com`, $domain))) && ($menutype == "mainmenu")) {
header("Status: 301 Moved Permanently");
header("Location: http://www.pky.com");
}要检查是否在pky.com &&前面添加了任何内容,当前菜单类型是"mainmenu“。我检查了Aziz提到的正则表达式;但是,输入:
foo.pky.com仍然转到url foo.pky.com,而不是重定向到pky.com。
发布于 2016-11-18 07:32:52
首先,您可以从parse_url()获取域,然后当您获取主机时,您可以使用simple regex,例如:
$allowedUrls = [
'test.com',
'google.com'
];
if (preg_match(`#.*pky\.com$#gm`, $domain) || in_array($domain, $allowedUrls)) {
// OK
}即使没有正则表达式,也可以检查域是否以pky.com结尾
(substr($domain, -7) === "pky.com");https://stackoverflow.com/questions/40666850
复制相似问题