我自己没有测试过,但它应该可以工作。
RewriteCond %{QUERY_STRING} show=(.*)
RewriteRule ^(index\.php|)$ http://%1.domain.tld [R=301,L]
RewriteRule ^(admin|special1|special2)\.php http://$1.domain.tld [R=301,L]
RewriteCond %{HTTP_HOST} ^(admin|special1|special2)\.domain\.tld$ [NC]
RewriteRule (.*) http://domain.tld/%1.php [L,NC,QSA]
RewriteCond %{HTTP_HOST} www\.domain\.tld [NC]
RewriteRule (.*) http://domain.tld/$1 [L,R=301,QSA]
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.tld$
RewriteRule (.*) http://domain.tld/?show=%1[L,NC,QSA]
如果用户http://domain.tld/admin.php
在他的浏览器中输入,那么他将被重定向到http://admin.domain.tld
. 但如果他进入http://admin.domain.tld
,他将不会被外部重定向。让我知道这是否是你想要的。