Mod使用GET变量将子域重写为PHP
我正在尝试围绕 mod 重写,但似乎无法弄清楚这一点.
I'm trying to wrap my head around mod rewrite, but can't seem to figure this out.
有什么办法可以做到以下几点吗?
Is there a way I could do the following?
用户输入:http://wildcard.mydomain.com
默默地写信给:
http://mydomain.com/index.php?username=wildcard
推荐答案
您必须在 RewriteCond
然后在 RewriteRule
.额外的 RewriteCond
用于防止 www.mydomain.com
和 index.php
被重写
You must capture the first part of the domain in a RewriteCond
and then use this in a RewriteRule
. The additional RewriteCond
s are there to prevent www.mydomain.com
and index.php
being rewritten
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
指向您的主机.
But this is only a small part of the needed functionality. Additionally, you must setup DNS entries for all of your username.mydomain.com
domain names or setup a wildcard DNS entry *.mydomain.com
pointing to your host.
否则,例如,客户端会尝试联系 jcraine.mydomain.com
,但找不到 DNS 条目并进行投诉.
Otherwise, the client tries to contact jcraine.mydomain.com
, for example, and doesn't find a DNS entry and complains.
如果这是虚拟主机,您还必须为每个添加一个 ServerAlias
你的用户名
If this is a virtual host, you must also add a ServerAlias
for each of your usernames
ServerAlias jcraine.mydomain.com
或一个通配符捕获所有子域
or a wildcard catching all subdomains
ServerAlias *.mydomain.com
相关文章