
我嘗試使用 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]