我可以将子域重定向到特定网页,并使用PHP处理子域值

时间:2011-01-25 19:14:46

标签: php .htaccess mod-rewrite

我熟悉修改htaccess文件,但不确定是否可以:

最终,我想将用户指向“虚构的”子域(那些不存在的子域),以便可以使用PHP和MySQL正确解析子域以查找特定成员的信息。

例如:

当有人访问www.site.com时,它会显示父网站,其中包含有关如何成为会员的信息。一旦某人成为会员,他们的“独特”URl就是:

www.site.com?MemberID=12345

最终,迫使会员记住问号代理等于可能会混淆以及需要记住正确的大写等等。

我希望实现以下目标:

www.12345.site.com

重定向到

www.site.com/index.php(和index.php读取12345就像$ _GET函数一样,根据它正确查找iD,有效和重新调整的响应。

我确实意识到我可以在哈希之后使用信息来实现相同的目标:

e.g。 www.site.com/12345

但问题是我们已经有其他页面使用/ xxxx修改客户端内容以及我不想阻止任何人访问的能力:www.site.com/contact例如

(网站重定向到索引,尝试查找memberid ='contact'并且找不到任何结果。)

intiial ideas:

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^subdomain.example.com$ [NC]
RewriteRule (.*) http://subdomain.example.com/$1 [R=301,L]

但似乎不起作用。注意:我的htaccess文件目前还剥离了所有页面的文件摘录(例如www.site.com/contact.php显示为www.site.com/contact)

感谢任何帮助。

关于第一个建议的更新 -

我的.htaccess目前是:

ErrorDocument 404 /404.php 选项+ FollowSymlinks RewriteEngine on RewriteCond%{REQUEST_FILENAME}!-d RewriteCond%{REQUEST_FILENAME} .php -f RewriteRule ^(。*)$ $ 1.php RewriteCond%{HTTP_HOST} ^(\ w +)。site.com $ [NC] RewriteRule(。*)/ subdomain.php?id =%1 [L]

我希望根据我的需要输入www.something.site.com我会被重定向到:www.site.com/processing_page.php?something

相反,它只是重定向到我的mediatemple主机页面(基本上说明没有名为'something'的子域名存在。

如果我只是去www.site.com,它会抛出503错误:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, EMAIL and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Apache Server at www.contendertest.com Port 80

apache错误日志声明:

[2011年1月27日12:43:37] [错误] [客户端1.2.3.4]由于可能的配置错误,请求超出了10次内部重定向的限制。如有必要,使用'LimitInternalRecursion'增加限制。使用“LogLevel debug”获取回溯。

尝试2

我的.htaccess文件现在被剥离为:

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^(.+)\.site\.com
RewriteRule .* http://site.com/processing_page.php?ID=%1 [L,R]

然而,这仍然指向我的媒体庙随机登陆页面。

1 个答案:

答案 0 :(得分:1)

您正在寻找“RewriteCond backrefereces”。对于当前的RewriteRule,它们采用%1形式而不是通常的$1

所以你的例子可能如下:

RewriteCond %{HTTP_HOST} ^(\w+).example.com$ [NC]
RewriteRule (.*) /subdomain.php?id=%1 [L]