Php .htaccess将[virtual]子域重写到[virtual]文件夹

Php .htaccess将[virtual]子域重写到[virtual]文件夹,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我有一个带有虚拟页面的站点,任何请求都会以这种方式重写到索引页面: RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^.*$ ./index.php 也就是说,被重写为我解析它的地方。这很有效 现在,我需要处理每一个虚拟子域,以便 我在CPanel中添加了一个通配符子域(*.example.com),因此每个子域都指向域文件夹(没有它

我有一个带有虚拟页面的站点,任何请求都会以这种方式重写到索引页面:

RewriteEngine On  
RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  
RewriteRule ^.*$ ./index.php
也就是说,被重写为我解析它的地方。这很有效

现在,我需要处理每一个虚拟子域,以便

我在CPanel中添加了一个通配符子域(
*.example.com
),因此每个子域都指向域文件夹(没有它,我在每个子域上都会得到“Server not found”)

我尝试了我在这里找到的每一个例子,但我无法让它们发挥作用。如果我在索引页上打印出
$\u SERVER['REQUEST\u URI']
,我总是得到最后一部分,但不是子域(即
/job/edit

有没有办法做到这一点

提前谢谢


编辑:我已经有了解决方法。
$\u服务器['HTTP\u HOST']
var包含整个域,即
user1.example.com
。我可以用PHP解析它并提取子域,但我认为这应该是一种更优雅的方式。

我也这样做过

创建名为“用户”的文件夹

创建index.php以处理对用户函数的调用

在Httpd.conf中添加一个路由

*.example.com指向路径/public\u html/user

<VirtualHost 0.0.0.0>
ServerAlias *.example.com
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/yourdoma/public_html/user
ServerName yourdomain.com
User yourdoma
Group yourdoma
BytesLog /usr/local/apache/domlogs/yourdomain.com-bytes_log
CustomLog /usr/local/apache/domlogs/yourdomain.com combined
ScriptAlias /cgi-bin/ /home/yourdoma/public_html/joe/cgi-bin/
</VirtualHost>

ServerAlias*.example.com
服务器管理员webmaster@yourdomain.com
DocumentRoot/home/yourdoma/public\u html/user
ServerName yourdomain.com
用户yourdoma
组yourdoma
BytesLog/usr/local/apache/domlogs/yourdomain.com-bytes\u log
CustomLog/usr/local/apache/domlogs/yourdomain.com组合
ScriptAlias/cgi-bin//home/yourdoma/public\u html/joe/cgi-bin/
现在所有呼叫都将路由到用户文件夹


在用户文件夹中添加一个Htaccess文件以重写基本路径

我也这样做了

创建名为“用户”的文件夹

创建index.php以处理对用户函数的调用

在Httpd.conf中添加一个路由

*.example.com指向路径/public\u html/user

<VirtualHost 0.0.0.0>
ServerAlias *.example.com
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/yourdoma/public_html/user
ServerName yourdomain.com
User yourdoma
Group yourdoma
BytesLog /usr/local/apache/domlogs/yourdomain.com-bytes_log
CustomLog /usr/local/apache/domlogs/yourdomain.com combined
ScriptAlias /cgi-bin/ /home/yourdoma/public_html/joe/cgi-bin/
</VirtualHost>

ServerAlias*.example.com
服务器管理员webmaster@yourdomain.com
DocumentRoot/home/yourdoma/public\u html/user
ServerName yourdomain.com
用户yourdoma
组yourdoma
BytesLog/usr/local/apache/domlogs/yourdomain.com-bytes\u log
CustomLog/usr/local/apache/domlogs/yourdomain.com组合
ScriptAlias/cgi-bin//home/yourdoma/public\u html/joe/cgi-bin/
现在所有呼叫都将路由到用户文件夹


在用户文件夹中添加Htaccess文件以重写基本路径

您需要一个通配符子域,对吗?意味着您需要将每个用户解析为子域?比如*.example.com?让这个调用正常工作?没错,我需要将每个用户解析为一个子域。你有一个可以访问Httpd.conf文件的专用主机吗?它是一个VPS帐户,我想我可以访问Httpd.conf文件,但我对低级访问知之甚少。你需要一个通配符子域,对吗?意味着您需要将每个用户解析为子域?比如*.example.com?让这个调用正常工作?没错,我需要将每个用户都解析为子域。你有专门的主机可以访问Httpd.conf文件吗?这是一个VPS帐户,我想我可以访问Httpd.conf文件,但我不太了解低级别访问。我想我不能使用这个解决方案。整个站点正在使用域根文件夹中的索引页,该索引页已处理该格式的每个页面(以及任何其他页面)。我需要将用户参数移动到子域,但它必须以相同的方式继续工作。我无法使用单独的文件夹来处理用户参数。我想我无法使用此解决方案。整个站点正在使用域根文件夹中的索引页,该索引页已处理该格式的每个页面(以及任何其他页面)。我需要将用户参数移动到子域,但它必须以相同的方式继续工作。我不能有单独的文件夹来处理用户参数。