我一直在試圖找出近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