首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用正则表达式测试url重定向的所有可能的字母、数字或字符

问使用正则表达式测试url重定向的所有可能的字母、数字或字符
EN

Stack Overflow用户
提问于 2016-11-18 07:24:01
回答 1查看 36关注 0票数 0

我有一个Joomla!设置多个域名用于一个Joomla实例的站点。站点的根域是www.pky.com。当访问我们购买的域名列表中的任何其他域名时,它们被定向到根域,但我正在使用php脚本通过测试URI来重定向到正在查看的“站点”的适当域名。用于该站点的一些urls是exampleone.pky.com、exampletwo.pky.com等。

站点的index.php文件中的重定向脚本设置如下:

代码语言:javascript
复制
<?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的一部分,以便它也被重定向到根域?

例如:

代码语言:javascript
复制
$myvar = some regex here;

if (($domain == "pky.com") || ($domain == "www.pky.com") || ($domain == $myvar . ".pky.com") || ($domain == "www" . $myvar . ".pky.com"))...

肯定有更好的方法来做这一切,但我仍在学习。

提前谢谢你。

编辑

所以我加了一句:

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

发布于 2016-11-18 07:32:52

首先,您可以从parse_url()获取域,然后当您获取主机时,您可以使用simple regex,例如:

代码语言:javascript
复制
$allowedUrls = [
  'test.com',
  'google.com'
];

if (preg_match(`#.*pky\.com$#gm`, $domain) || in_array($domain, $allowedUrls)) {
   // OK
}

即使没有正则表达式,也可以检查域是否以pky.com结尾

代码语言:javascript
复制
 (substr($domain, -7) === "pky.com");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40666850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档