我尝试使用 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
这可以完美运行,但不是动态的。
答案1
解决方案/解决方法:为内部请求保留一个主机名部分:
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]
答案2
如果重写后不需要处理任何规则,只需在方括号中添加“L”=“last”选项:
RewriteRule ^/(.*) http://%1.dev.example.com/%1/$1 [P,L]