.htaccess rewriterule创建子域

时间:2014-05-14 05:43:10

标签: apache .htaccess mod-rewrite subdomain

我想创建子域名,以便我可以使用地址test.mydomain.com。 在搜索网页和大量试用后,我在.htacces文件中得到了这个:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com(:80)?$
    RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/$1 -f [OR]
    RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/$1 -d
    RewriteRule (.*) /subdomains/%1/$1 [L]
</IfModule>

如果我在浏览器中写了http://test.mydomain.com/folder/,一切都很好。

但如果我写http://test.mydomain.com/folder (不用斜杠),它会被重定向到http://test.mydomain.dk/subdomains/test/folder /,这是浏览器中显示的地址(我不想要)

我的问题是:
如何阻止重定向?
我只想在浏览器中看到http://test.mydomain.com/folder。无论结束斜线如何。

我的网络文件是这样的:

.htaccess
index.php (page for mydomain.com)
\subdomains
    \test
        \hello
         index.php (page for test.mydomain.com/hello)

感谢。

(对不起网址中的空格。它不会让我的帖子有链接)

1 个答案:

答案 0 :(得分:0)

立即开始工作:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on

    # If requested URI does not end in "/"
    RewriteCond $1 !/$
    # add a trailing slash
    RewriteRule ^(.+)$ /$1/ [R=301,L]

    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com(:80)?$
    RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/%{REQUEST_URI} -d [OR]
    RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/%{REQUEST_URI} -f
    RewriteRule (.*) /subdomains/%1/$1 [L]
</IfModule>