我给了localhost一个别名:“myhost”。 在我的地址栏中input“myhost”显示我/var/www/index.php。 到现在为止还挺好。 在/ var / www上设置一个Apache虚拟主机,并将其命名为“myhost”,然后添加三个别名:'* .myhost''* .myhost。*'myhost。''这个想法是:
myhost =网站索引/着陆页/一般的东西
user.myhost =特定于用户的一般东西
myhost.topic =不是特定于用户的主题内容
user.myhost.topic =特定于用户的主题内容
但所有的数据都是dynamic加载的,所以实际的URL会更像:
myhost / index.php?user =(用户的空名称)&host = myhost&app =(空或主题)
我已经花了两天的时间试图找出这个重写规则,并没有喜悦。 任何帮助将不胜感激。
编辑:另外,我必须添加user1.myhost,user2.myhost,myhost.topic1,myhost.topic2,user1.myhost.topic1,user2.myhost.topic1,user1.myhost.topic2,user2.myhost.topic2等到我的主机文件,使这项工作? 如果是这样,是不是还有更好的办法?
您可以使用这些重写规则,通过主机参数将所有域redirect到myhost 。
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} myhost RewriteRule .* - [L] RewriteCond %{QUERY_STRING} ^.+$ RewriteRule ^(.*)?(.*)$ $1?$2&host=%{HTTP_HOST} [L] RewriteRule ^(.*)$ http://myhost/$1?host=%{HTTP_HOST} [L]
您也可以在您的应用程序中获取域名(例如php中的$ _SERVER [“SERVER_NAME”])并使用此值。 所以你不需要额外的主机参数。
您可以安装一个易于使用的dns服务器(如tinydns),并设置通配符子域名,如* .myhost等,但user2.myhost.topic2不是一个有效的域名。 如果您的域名是“example.com”,则您的子域名应该是“topic1.example.com”或“user1.topic1.example.com”。 你不能使用“user1.example.topic1”作为互联网领域。