我一直在试图找出近2个小时,现在不能得到它的工作,所以我希望你们中的一些人可以帮助我。请注意我对PHP和正则表达式很新颖。正则表达式解析子域和重定向
好吧,我正在尝试设置一个重定向,它将根据子域中的文本重定向到某些页面。我为我的子域名设置了通配符,现在任何子域名URL都会重定向到包含以下代码的此PHP文件。
所以,如果有人来anytexthere.domain.com他们到达domain.com/redirect.php
此PHP文件将被用于把它们发送到正确的相关的URL。
要做到这一点,我打算使用诸如anythinghere.1.domain.com之类的子域名,然后让我的代码检查子域中出现的 - 以及之前和.domain之前的内容。如果它在这种情况下等于1转到任何URL匹配它等等。
到目前为止的代码:
<?php
$host = $_SERVER['SERVER_NAME'];
preg_replace('(?<=-).*?(?=\.)', $host, $matches);
$url = $matches;
switch ($url)
{
case "1":
header("Location: http://www.website.com/page-here/");
break;
case "test":
header("Location: http://www.website.com/this-is-a-test/");
break;
case "another":
header("Location: http://www.website.com/another-page-here/");
break;
default:
header("Location: http://www.website.com");
break;
}
?>
正如你可以看到我有存在的情况下使用文本如“另一个”而不是数字,因为我需要它来工作,如果我选择后,使用文字或数字 - 在子域中。
此代码,因为它现在是给我下面的错误:
警告:preg_replace函数()[function.preg替换]: '' 未知的修饰在thelocationhere第4行
和
警告:不能更改头信息 - 头已经发出(输出开始thelocationhere:4)thelocationagain在线22
我相信上面的第二个错误与默认情况有关。
我真的很感激任何帮助。我花了很多时间搜索代码片段并对它们进行测试,但是我没有完成它自己的工作。
谢谢, 彼得
第二个错误是因为它已经发送了一些东西(第一个错误)。第一个错误是因为你缺少[分隔符](http://us2.php.net/manual/en/regexp.reference.delimiters。PHP)在你的正则表达式(结果是,它假设你的'()'是分隔符,然后不知道如何处理'.')。 – Wiseguy