私はこれを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;
}
?>
ご覧のとおり、サブドメインで - の後にテキストまたは数字を使用することを選択した場合に機能する必要があるため、数字の代わりに「another」などのテキストを使用する場合があります。
このコードは現在、次のエラーを表示しています。
警告: preg_replace() [function.preg-replace]: 不明な修飾子 '.' 4行目のここの場所で
と
警告: ヘッダー情報を変更できません - 22 行目の場所でヘッダーが既に送信されています (output started at thelocationhere:4)。
上記の 2 番目のエラーは、デフォルトのケースと関係があると思います。
これについて何か助けていただければ幸いです。コードのスニペットを探してテストするのに多くの時間を費やしましたが、自分で動作させることはできませんでした。
ありがとう、ピーター