将<sub> .domain.com / <path>重写为/ subdomains / <sub> / <path> </path> </sub> </path> </sub>

时间:2011-05-30 14:59:46

标签: apache .htaccess mod-rewrite dns subdomain

我被我的mod_rewrite困住了(大约4个小时,是的,我也用Google搜索)。 基本上我想创建动态子域。所以我只创建一个新文件夹,它自动拥有它自己的子域名。让我举个例子:

/ (root)
    /logs
    /configs
    /otherPrivateStuff
    [...]
    /subdomains (This is, where things get interesting)
        /www            (should be: www.domain.com) [domain.com is automatically 301 to www]
        /aproject       (should be: aproject.domain.com)
        /anotherproject (should be: anotherproject.domain.com)

我的.htaccess看起来像这样:

# Mod Rewrite
RewriteEngine on

# Subdomains
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com(:[0-9]+)? [NC]
RewriteRule ^(.*) subdomains/%1/$1/ [NS,L]

http://project.domain.com/path/subpath/file.txt - &gt; http://domain.com/subdomains/project/path/subpath/file.txt


这就像一个魅力,但有一个问题:如果网址如下所示,此规则不适用:http://project.domain.com/subdomains/这就像没有重写一样。

我不明白这一点。有人可以帮助我吗? :)

1 个答案:

答案 0 :(得分:0)

我很确定你想要专门排除“subdomains”目录。为此,您只需使用:

# Mod Rewrite
RewriteEngine on

# Subdomains
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com(:[0-9]+)? [NC]
RewriteCond %{REQUEST_URI} !^/subdomains
RewriteRule ^(.*) subdomains/%1/$1/ [NS,L]

我希望这对你有用。