我想把我的头围绕mod重写,但似乎不能弄清楚。
我能做以下的事情吗?
用户类型:http://wildcard.mydomain.com
静默写入:
http://mydomain.com/index.php?username=wildcard
您必须在RewriteCond
中捕获域的第一部分,然后在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]