我正试图围绕 mod rewrite 进行思考,但似乎无法弄清楚这一点。
有没有办法我可以做到以下几点?
用户输入:http://wildcard.mydomain.com
默默地写信给:
http://mydomain.com/index.php?username=wildcard
我正试图围绕 mod rewrite 进行思考,但似乎无法弄清楚这一点。
有没有办法我可以做到以下几点?
用户输入:http://wildcard.mydomain.com
默默地写信给:
http://mydomain.com/index.php?username=wildcard
您必须在 a 中捕获域的第一部分,RewriteCond
然后在 a 中使用它RewriteRule
。额外RewriteCond
的 s 是为了防止www.mydomain.com
和index.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]