私はこのNGINX書き換えURLを持っています:
if ($http_host !~ "([a-zA-Z0-9.-]+)\.example\.com(.+)") {
rewrite ^ http://example.com/browse.php?u=http://$1$2? permanent;
}
ホストがNGINXのserver_nameを次のように変更できないため、ルールをPHPに変換したい:*。example.com
私は次のようなことを試しました:(このスクリプトは私のドメインのindex.phpにあり、DNSワイルドカードをオンにしました)
<?php
function unparse_url($parsed_url) {
$scheme = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : '';
$host = isset($parsed_url['host']) ? $parsed_url['host'] : '';
$port = isset($parsed_url['port']) ? ':' . $parsed_url['port'] : '';
$path = isset($parsed_url['path']) ? $parsed_url['path'] : '';
$query = isset($parsed_url['query']) ? '?' . $parsed_url['query'] : '';
$fragment = isset($parsed_url['fragment']) ? '#' . $parsed_url['fragment'] : '';
}
if(preg_match('/^([a-zA-Z0-9.-]+)\.example\.com\/(.+)$/', $_SERVER["SERVER_NAME"])){
unparse_url(parse_url($_SERVER["SERVER_NAME"]));
header('Location: $schemeexample.com/browse.php?u=$scheme$host$port$path$query$fragment');
}
else {
?>
<html>
**HTML CONTENT HERE**
ご覧のとおり、これはparse_urlを使用してURLを解析し、解析されたURLから文字列に変換し直します。
残念ながら、このスクリプトは機能していません。HTMLページのコンテンツを取得します。誰かが答えを持っていますか?
前もって感謝します。