问题描述
我正在尝试围绕 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 RewriteConds 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