我一直在尝试解决这个问题将近 2 个小时,但无法让它工作,所以我希望你们中的一些人能帮助我。请注意我对 PHP 和正则表达式很陌生。
好的,所以我正在尝试设置一个重定向,该重定向将根据子域中的文本重定向到某些页面。我为我的子域设置了通配符,并且任何子域 URL 现在都重定向到包含以下代码的这个 php 文件。
因此,如果有人访问 anytexthere.domain.com,他们会到达 domain.com/redirect.php
此 php 文件将用于将它们发送到正确的相关 URL。
为此,我将使用诸如anyhere-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-replace]: 未知修饰符 '.' 在第 4 行的此处
和
警告:无法修改标头信息 - 标头已由(输出开始于此处的位置:4)在第 22 行再次在该位置发送
我相信上面的第二个错误与默认情况有关。
我真的很感激这方面的任何帮助。我花了很多时间到处搜索代码片段并对其进行测试,但我还没有让它自己工作。
谢谢,彼得