获取子域并使用它访问文件夹

get subdomain and access folder with it

我必须获取我域的子域(示例:d3strukt0r.orbitrondev.com/forum.php) 因此,在示例中,我必须获取 d3strukt0r 并访问目录:/service/d3strukt0r/www/forum.php

这必须与 .htaccess

一起使用

我已经用这段代码试过了:

RewriteCond %{ENV:REDIRECT_SUBDOMAIN} ="" 
RewriteCond %{HTTP_HOST} ^([a-z0-9][-a-z0-9]+)\.orbitrondev\.com\.?(:80)?$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/\.php -f [NC]
RewriteRule ^(.+?)/?$ /service/%1/www/.php [E=SUBDOMAIN:%1,L]

结果是:

The requested URL /forum.php was not found on this server.

所以我访问的代码不是 /service/d3strukt0r/www/forum.php 这个 /forum.php

编辑

它适用于此

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9][-a-z0-9]+)\.orbitrondev\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/service/%1/www/ -f [NC]
RewriteRule ^(.*)$ /service/%1/www/ [L]

问题是,当我访问文件夹 http://d3strukt0r.orbitrondev.com/folder/ 时,它访问的是 /folder/ 而不是 /service/d3strukt0r/www/folder/

我该如何解决这个问题?

  • 您不需要设置 SUBDOMAIN 环境变量,因为您正在检查是否存在 .php 扩展
  • 您无法匹配 HTTP_HOST 变量中的端口
  • 您应该忽略以 www.
  • 开头的 HTTP_HOST

您可以使用这条规则:

RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTP_HOST} ^([a-z0-9][-a-z0-9]+)\.orbitrondev\.com$ [NC] 
RewriteCond %{DOCUMENT_ROOT}/service/%1/www/.php -f [NC]
RewriteRule ^(.+?)/?$ /service/%1/www/.php [L]

还要确保您正在访问这个 URL:

http://d3strukt0r.orbitrondev.com/forum

即最后没有 .php