Regex Apache通配符将子域重写到子目录

Regex Apache通配符将子域重写到子目录,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,一直在尝试将通配符子域重写到子目录,但运气不佳 即 abc.domain.com>www.domain.com/sub/abc 我试过以下方法 // example 1 RewriteCond %{HTTP_HOST} ^(.*).domain.com [NC] RewriteRule ^(.*)$ ./sub/$1 [L] // example 2 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d

一直在尝试将通配符子域重写到子目录,但运气不佳

abc.domain.com>www.domain.com/sub/abc

我试过以下方法

// example 1
RewriteCond %{HTTP_HOST} ^(.*).domain.com [NC]
RewriteRule ^(.*)$ ./sub/$1 [L]

// example 2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(.*).domain.com [NC]
RewriteRule ^(.*)$ ./sub/$1 [L]

希望有人能提供建议。

您需要使用
RewriteCond
中的反向引用:

RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com$ [NC]
RewriteRule ^((?!(?:sub|index\.php)/).*)$ ./sub/%1/$1 [L,NC]

谢谢Im获取请求超出了10个内部重定向的限制。ie,[Tue Feb 24 16:43:44 2015][debug]core.c(3118):[client 192.168.1.108]从r->uri=/index.php/sub/abc/[Tue Feb 24 16:43:44 2015][debug]core.c(3118):[client 192.168.1.108]从r->uri=/sub/abc/重定向您确定有如下规则:
RewriteRule^((?!sub/).$/%1/$1[L,NC]
如果请求uri已经有
/sub/
是100%,则不会重写。我清除了apache日志及其显示:好的,您可以将完整和最新的.htaccess放入问题中吗?从您的日志来看,似乎有一些规则将其写入
/index.php/…