Php 以子域为变量的htaccess重写

Php 以子域为变量的htaccess重写,php,.htaccess,Php,.htaccess,我有一个sitename.net,在根目录中有.htaccess和index.php .htaccess是: FallbackResource /index.php 基本上,由于它是一个空站点(没有子目录,没有文件等等),我将返回index.php,其中包含以下内容: $path = ltrim($_SERVER['REQUEST_URI'], '/'); // Trim leading slash(es) $elements = explode('/', $path);

我有一个sitename.net,在根目录中有.htaccess和index.php .htaccess是:

FallbackResource /index.php
基本上,由于它是一个空站点(没有子目录,没有文件等等),我将返回index.php,其中包含以下内容:

$path = ltrim($_SERVER['REQUEST_URI'], '/');    // Trim leading slash(es)
$elements = explode('/', $path);                // Split path on slashes
echo "Domain is: $domain <br>";
if(empty($elements[0])) {                       // No path elements means home
    echo "ShowHomepage()";
} 
else switch(array_shift($elements)) {             // Pop off first item and switch
    case 'tests':
      echo "First is test";
    case 'sample':
      echo "First is sample";
    default:
        header('HTTP/1.1 404 Not Found');
        Show404Error();
}
…但仍然得到404错误。。。仍然无法获得:
要表现得像这样,index.php将完成它的工作…

使用php重定向也可以:

$url = "https://gbr8295.sitename.net"; //$_SERVER['HTTP_HOST']

if (substr($_SERVER['HTTP_HOST'], 0, 16) != 'https://sitename') { // You need edit 16 to a correct number for your domain
   $username = substr($url, 8, ((strpos($url, '.') - 8)));
   $new_url = "https://sitename.net/".$username."/";

   echo $url."<br>"; // Output: https://gbr8295.sitename.net
   echo $new_url; // Output: https://sitename.net/gbr8295/

   header("Location: $new_url");
   exit;
} else {
   echo 'ok';
}
$url=”https://gbr8295.sitename.net"; //$_服务器['HTTP_主机']
如果(substr($\u服务器['HTTP\u主机'],0,16)!='https://sitename“){//您需要为您的域将16编辑为正确的数字
$username=substr($url,8,((strpos($url,'.')-8));
$new_url=”https://sitename.net/“$username。”/”;
echo$url。“
”;//输出:https://gbr8295.sitename.net echo$new_url;//输出:https://sitename.net/gbr8295/ 标题(“位置:$new_url”); 出口 }否则{ 回声‘ok’; }
我认为通配符DNS记录是您需要的

然后,所有子域将重定向到您的DNS,您可以将其重定向到服务器

编辑: 一旦子域启动并运行,您就可以使用
要修复htaccess。

否,我实际上需要转换为,以便index.php生效……如果您将服务器DNS从*.sitename.net添加到sitename.net,这正是将要发生的事情。DNS就是这么做的。一旦DNS将您重定向到主域,您就可以使用htaccess重写URL。但除非子域确实存在,否则所有这些都不会起作用。除非你加上通配符,否则它不会。我现在明白了。。。现在就试试:)一旦你让子域工作起来,这会有帮助。我已经添加了通配符。sitename.net。CNAME指向sitename.net并更新了htaccess到:RewriteCond%{HTTP\u HOST}^(.)\.sitename\.net RewriteRule^(.*)$%1/$1[L,NC,QSA]FallbackResource/index.php上的RewriteEngine,但仍然出现错误…我得到了php部分,我的htaccess有问题,因为不存在。。。实际上不存在子域,文件夹中也没有文件。。。。所以我只需要找出一种方法,将username.sitename.net/tests/test1转换为sitename.net/username/tests/test1,这样index.php就可以加载了,我知道该怎么做了。。。。
$url = "https://gbr8295.sitename.net"; //$_SERVER['HTTP_HOST']

if (substr($_SERVER['HTTP_HOST'], 0, 16) != 'https://sitename') { // You need edit 16 to a correct number for your domain
   $username = substr($url, 8, ((strpos($url, '.') - 8)));
   $new_url = "https://sitename.net/".$username."/";

   echo $url."<br>"; // Output: https://gbr8295.sitename.net
   echo $new_url; // Output: https://sitename.net/gbr8295/

   header("Location: $new_url");
   exit;
} else {
   echo 'ok';
}