2

我正试图围绕 mod rewrite 进行思考,但似乎无法弄清楚这一点。

有没有办法我可以做到以下几点?

用户输入:http://wildcard.mydomain.com

默默地写信给:

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

2 回答 2

5

您必须在 a 中捕获域的第一部分,RewriteCond然后在 a 中使用它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
于 2013-03-11T08:58:08.907 回答
0

应该做的伎俩。

RewriteCond %{HTTP_HOST} ^(users)\.example\.com$
RewriteRule ^(.*)$    http://www.example.com/?username=%1 [L]
于 2013-03-11T03:32:32.400 回答