【发布时间】:2011-05-03 11:08:08
【问题描述】:
我正在使用mod_rewrite,将子域转换为目录 url。 (解决方案from here)。当我明确地为一个子域编写规则时,它可以完美运行:
RewriteCond %{HTTP_HOST} ^[www\.]*sub-domain-name.domain-name.com [NC]
RewriteCond %{REQUEST_URI} !^/sub-domain-directory/.*
RewriteRule ^(.*) /sub-domain-directory/$1 [L]
但是,如果我尝试匹配所有子域,则会导致 500 内部错误(日志显示重定向过多)。代码是:
RewriteCond %{HTTP_HOST} ^[www\.]*([a-z0-9-]+).domain-name.com [NC]
RewriteCond %{REQUEST_URI} !^/%1/.*
RewriteRule ^(.*) /%1/$1 [L]
谁能提出问题出在哪里以及如何解决?
【问题讨论】:
-
您正在将每个页面重定向到自身,但我不知道如何解决。
-
@Andrew 不,不是因为 OP 想要使用
mod_rewrite。尝试在您的正则表达式捕获组中放置一个静态子域,看看是否可行。 -
@Michael:我猜你的意思就像我在问题中写的那样。静态子域有效。它的行为与蒂姆·斯通和时间机器所指出的完全一样。我还没有尝试 Tim 的解决方案。
-
类似的东西,但尝试在第二个示例中将
([a-z0-9]+)替换为(sub-domain-name),看看是否可行。
标签: .htaccess mod-rewrite subdomain wildcard-subdomain