子域中的子页面

问题描述:

好的,目的是为我们的成员动态创建无限数量的子域。 因此,对www.example.com/sub_index.php?user=demo的请求将转换为demo.example.com网址,而www.example.com由index.php提供。子域中的子页面

我已经启用名称服务器和Web服务器来接受通配符请求(实际上我联系我的托管服务器来做到这一点)。

在htaccess的一部分,我有以下几点:

####rewrite example.com into www.example.com 
RewriteCond %{HTTP_HOST} ^example.com 
RewriteRule (.*) http://www.example.com/$1 [R=301,L] 
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*index\.htm([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^(([^/]+/)*)index\.htm$ http://www.example.com/$1 [R=301,L] 

####subdomains 
RewriteCond %{HTTP_HOST} !^www\.example.com 
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9]+)\.example.com 
RewriteRule ^(.*)$ sub_index.php?user=%1 

因此,请求demo.example.com/和demo.example.com/index.php由www.example服务。 ?COM/sub_index.php用户=演示

我的问题是,我不能找到一种方法,有子页面的子域 例如工作:demo.example.com/somepage.php应该由www.example送达。 com/sub_page.php?user = demo 而demo.example.com/otherpage.php?id=5应该由www.example.com/sub_page2.php?user=demo & id = 5。

谢谢你的任何建议/提示

为了让您的重写规则管理,你最好的办法是改造的URL 没有引入新的变量。

在你的例子中,不可能使用简单的文本替换从somepage.php到sub_page.php,然后从otherpage.php到sub_page2.php - 每个页面都需要一个新的规则,因为只有你了解映射。它更容易将结果网址基于源网址中的数据。

例如,你可以设计一个方案,其中:

demo.example.com/somepage.php?start=5 

转变成

www.example.com/sub_somepage.php?user=demo&start=5 

有了这个计划,目标脚本的名称可以从原始脚本的名称派生。该方案的重写规则如下所示:

RewriteRule ^/([A-Za-z0-9_]+\.php) /sub_$1?user=%1 [qsappend] 

使重写规则正常工作可能非常棘手。当您优化的规则,你可能会想添加到您的配置:

RewriteLog "/tmp/httpd-rewrite.log" 
RewriteLogLevel 5 

然后,您可以检查您的规则做你想要什么。有关这些指令如何工作的更多信息在httpd.apache.org。特别是,如果您想重定向到其他主机以提供内容,则必须将新主机名添加到替换和[重定向]标志。

+0

重写规则^ /(A-ZA-Z0-9 _] + \。PHP)/ sub_ $ 1?USER =%1 qsappend] 这部作品sub_index.php 但给我sub_other_page.php 404错误 这两个页面都上传到根文件夹中 – andrew 2011-04-11 13:23:48