通过.htaccess管理动态子域并清除所有URL

时间:2011-09-20 07:25:38

标签: php .htaccess mod-rewrite

我为我的网站设置了通配符DNS,现在我的DNS正在转发所有

请求

*.domain.com  至 domain.com

.htaccess文件中我想要的是一种区分根域和动态子域的方法。如果我正在使用

user1.domain.com

那么这应该转到

domain.com?users.php?val=user1

和其他文件,如新闻项,层次结构应该像

user1.domain.com/news/newsdetails.php

domain.com/newsdetails.php?val=user1

它不应该打扰主根域,就像我的domain.com/newsdetails.php将转到newsdetails文件而不设置val变量。

这里的想法基本上是我应该处理动态子域重写和主域文件。

编辑:我也希望如果有人进入www.domain.com然后它应该选择该请求的索引文件,如果它的user1.domain.com那么它应该是另一个文件。

任何人都能在这个问题上帮助我吗?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

这是我在我的生产环境中使用的东西:

# => handle domain names like "prefix.domainname.xx"
RewriteCond %{HTTP_HOST} (([a-zA-Z0-9\-]+)\.)([a-zA-Z0-9\-]+)\.+(fr|com|net|org|eu)$
# - If valid, let's take an example:
#   http://aa.domainname.fr
# %1 = first group until "." (with it) i.e. "aa."
# %2 = first group without the "."  i.e. "aa"
# %3 is the domain name i.e. "domainname"
# %4 is the extension
# - in %2 = your user id
RewriteRule $ news/newsdetails\.php newsdetails.php?val=%2 [QSA,L]

我几乎可以肯定这可行。当然,这只适用于您的第一个URL示例。如果你想要更多的东西,请求它。