用它获取子域名和访问文件夹

时间:2015-01-17 22:59:23

标签: apache .htaccess mod-rewrite

我必须得到我的域的子域名(例如: 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}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /service/%1/www/$1.php [E=SUBDOMAIN:%1,L]

出来的是:

  

在此服务器上找不到请求的URL /forum.php。

因此访问了我的代码而不是/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/$1 -f [NC]
RewriteRule ^(.*)$ /service/%1/www/$1 [L]

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

  • 您不需要设置SUBDOMAIN env变量,因为您正在检查是否存在.php分机
  • 您无法匹配HTTP_HOST变量
  • 中的端口
  • 您应该从HTTP_HOST
  • 开始忽略www.

您可以使用此规则:

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

另请确保您访问此网址:

http://d3strukt0r.orbitrondev.com/forum

即。最后没有.php