我尝试使用fqdn的第一部分作为重写目标:
http://demo.dev.example.com/something= > http://demo.dev.example.com/demo/something
RewriteCond %{HTTP_HOST} ^([a-z0-9-]+).dev.example.com [NC] RewriteRule ^/(.*) http://%1.dev.example.com/%1/$1 [P]
这创造了一个无限循环。 所以我需要另一个条件来检查这个请求是否已被重写:
RewriteCond %{REQUEST_URI} !^/%1
那么这是行不通的,文档没有提到在CondPatterns中使用反向引用,大多数情况下不支持。
RewriteCond %{REQUEST_URI} !^/demo
这完美的作品,但不是dynamic的。
解决scheme/解决方法:为内部请求保留一个主机名部分:
RewriteCond %{HTTP_HOST} !^internal.dev.atizo.org [NC] RewriteCond %{HTTP_HOST} ^([0-9a-z-]+).dev.atizo.org [NC] RewriteRule ^/(.*) http://internal.dev.atizo.org/%1/$1 [P]
如果重写后不需要处理任何规则,只需在方括号中添加“L”=“last”选项:
RewriteRule ^/(.*) http://%1.dev.example.com/%1/ $1 [P,L]