2011-08-03 128 views
1

我有一个即时通讯工程,当用户尝试访问x.website.com时,它会显示特定状态的结果,我将如何处理这个问题而不创建52个子域名手动?通配符子域名将子域名值传递给脚本

有没有办法用htaccess来做到这一点?但是如果访问state.website.com/search.php,它也应该可以工作,它会显示状态X的所有结果,所以我需要它是一个常量变量。

或者还有更好的方法吗?谁能帮忙?

谢谢

回答

3

您需要定义一个wildcard DNS record*.example.com。任何没有定义真实DNS记录的子域将被发送到通配符记录。

与您的域名注册商联系,查看您是否被允许创建通配符记录。

在你的.htaccess文件,你可以映射的子域,像这样:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ [NC] 
# The state is captured as %1 
RewriteRule . /index.php?state=%1 [L,QSA] 

# More generically - pass the state to any request 
# I think this will work without going to a redirect loop 
RewriteRule ^(.+)$ $1?state=%1 [L,QSA] 

里面index.php一旦你从检索查询字符串的状态,你可以将其存储在$_SESSION和使用,作为一个搜索过滤器。

+0

所以我必须让他们都完成? DNS通配符和htaccess?我也错了,认为这不会让我们说state.website.com/search.php?因为它会尝试传递给index.php? –

+0

您将需要通配符DNS记录和.htaccess。但是,您可以将'?state ='的查询字符串值存储在'$ _SESSION'中并使用PHP进行检索。 –