Mod Rewrite - 高级问题

时间:2011-01-28 13:24:43

标签: apache mod-rewrite subdomain wildcard-subdomain

我需要将未知的子域名翻译成变量,因此以下内容适用:

  • http://test.example.com/http://www.example.com/?domain=test

  • http://xyz.example.com/http://www.example.com/?domain=xyz

  • http://www.example.com/http://www.example.com/

  • http://www.example.com/pageA/http://www.example.com/pageA/

  • http://fish.example.com/pageB?somevar=somethinghttp://www.example.com/pageB?somevar=something&domain=fish

  • http://www.example.com/pageB?somevar=somethinghttp://www.example.com/pageB?somevar=something

  • http://fish.example.com/pageBhttp://www.example.com/pageB?domain=fish

正如您所看到的,我需要做的就是将所有子域替换为www,并将子域名附加为名为的get var。

我真的迷失了。

编辑:哦我还希望用户仍然可以在网址中看到子域名,而不是重定向。

2 个答案:

答案 0 :(得分:1)

试试这个:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^([a-z]+)\.example\.com$
RewriteCond %1 !=www
RewriteRule ^ http://www.example.com%{REQUEST_URI}?domain=%1 [QSA]

答案 1 :(得分:0)

我会用:

RewriteEngine on
RewriteCond %{HTTP_HOST} !=www.example.com
RewriteCond %{HTTP_HOST} ^(www\.|)(.+)\.example\.com$
RewriteRule ^.*$ http://www.example.com/$1?domain=%2 [QSA]

这也会将www.fish.example.com重写为...?domain=fish