Apache URL重写和通配符子域处理

时间:2011-12-18 22:24:13

标签: php apache .htaccess mod-rewrite

我是一个PHP新手,我正在创建一个用户可以注册并可以获得子域名的Web应用程序。我已经完成了注册部分,但我还想做一件我无法弄清楚的事情。 因此,当用户浏览example.domain.com时,如果用户'example'已经注册,那么他应该从domain.com/users/example/获取该页面,但如果未使用用户名,则应写入“此域名尚未注册.blabla“

我怎么能这样做? 提前谢谢,对不起我可怜的英语:)

2 个答案:

答案 0 :(得分:3)

这可能就是你要找的东西?

RewriteEngine On
RewriteBase /   

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC]
RewriteRule ^$ /users/%1/ [L]

RewriteRule ^user/([a-zA-Z0-9-_]+)/$ user.php?username=$1 [L]

然后你可以管理php文件中的显示部分,如果没有用户关联则重定向。

您还必须在域的httpd.conf文件中添加通配符注释,以便支持通配符子域:

ServerAlias domain.com www.domain.com
ServerAlias *.domain.com

User.php类似于:

<?
if(mysql_num_rows(mysql_query("SELECT id FROM db WHERE username = 'mysql_real_escape_string($_GET[username])'") > 0)
{
    echo "User Exists";
}
else
{
    header("Location: /register.php?username=$_GET[username]");
}
?>

答案 1 :(得分:-1)

首先,创建一个默认页面,其中包含“此域尚未注册.blabla”的消息。请致电此registration.html

我假设您有一个存储已注册域名的数据库。

搜索数据库以查看是否已注册example.domain.com。

if(example.domain.com registered)
http_redirect (domain.com/users/example/);
else  
http_redirect (registration.html);
相关问题