用GET变量重写子域到PHP


Mod Rewrite Subdomain to PHP with GET variable

我想把我的头围绕mod重写,但似乎不能弄清楚。

我能做以下的事情吗?

用户类型:http://wildcard.mydomain.com

静默写入:

http://mydomain.com/index.php?username=wildcard

您必须在RewriteCond中捕获域的第一部分,然后在RewriteRule中使用它。额外的RewriteCond s是用来防止www.mydomain.comindex.php被重写的

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www'.
RewriteCond %{REQUEST_URI} !index'.php
RewriteCond %{HTTP_HOST} ^(.+?)'.mydomain'.com$
RewriteRule .* /index.php?username=%1 [L]

但这只是所需功能的一小部分。此外,您必须为所有username.mydomain.com域名设置DNS条目,或设置指向您的主机的通配符DNS条目*.mydomain.com

否则,客户端尝试联系jcraine.mydomain.com,例如,没有找到DNS条目并抱怨。

如果这是一个虚拟主机,您还必须为每个用户名添加一个ServerAlias

ServerAlias jcraine.mydomain.com

或捕获所有子域

的通配符
ServerAlias *.mydomain.com

应该可以。

RewriteCond %{HTTP_HOST} ^(users)'.example'.com$
RewriteRule ^(.*)$    http://www.example.com/?username=%1 [L]