动态子域的htaccess问题

时间:2014-03-23 13:31:07

标签: .htaccess subdomain

我是htaccess的新手。

我做了一个会计系统,其中子域名代表相应的文件夹。

这意味着:如果url是abc.ucounting.com,那么肯定有一个命名为abc的文件夹。

现在我的要求是,如果有人输入任何错误的网址如abc123并且没有任何文件夹命名abc123那么这将重定向到错误页面。

到目前为止我做了:

ServerName vhosts.ucounting.com
       ServerAlias *.ucounting.com
DocumentRoot /data/www/uc/ucountingnew_test
VirtualDocumentRoot /data/www/uc/ucountingnew_test
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/user_company/* !-d

RewriteRule . http://www.ucounting.com/error/error_account_not_found [L]
</IfModule>

我几乎接近解决方案。我需要获取子域名,以便我可以将其放在rewriteCond而不是*

请在这个问题上帮助我。

1 个答案:

答案 0 :(得分:1)

您可以使用%{HTTP_HOST}找到当前域。

RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$
RewriteCond %{DOCUMENT_ROOT}/%1/ !-d
RewriteRule ^ http://www.example.com/error/error_account_not_found [R,L]

第一个条件匹配主机与正则表达式。第一个捕获组([^\.]+)匹配主域名之前的所有内容。您可以使用%1从最后一行使用捕获组。供你参考。可以使用$1引用同一行上的捕获组。单个^匹配字符串的开头,因此匹配任何请求,其中单个.将匹配至少1个字符的任何请求。我使用[R,L]作为标志,以明确它是一个外部重定向,即使第二个参数中的http://domainname使其成为重定向。