说我在example.com.
一个客户 migth在example.com/customer/hisname/
中有内容。
好吧,我想让客户 为其内容指定 域名,hisname.com
,这样(hisdomain.com)呈现example.com/customer/hisname/
。
为此我创建了两个虚拟主机,两者都在同一个地方有根目录,并且我编写了一个.htaccess文件以便过滤http_host,如果不是example.com,则以这样的方式重写将请求传递给example.com/customer/hisname /.
但是,当我没有在URI中获得/ customer / hisname / part时,这种方法不起作用。 如果我访问example.com/index.php中的hisname.com/list/,我需要同时拥有/ list /和(作为前缀)/ customer / hisname /,我只会得到,正如您所料just / list /.
那么,对此有什么正确的方法呢?
答案 0 :(得分:2)
如果您可以创建Virtual Hosts,则应设置正确的文档根目录,而不是使用mod_rewrite
<VirtualHost w.x.y.z:80>
ServerAdmin webmaster@hisname.com
DocumentRoot /path/to/www/customer/hisname
ServerName hisname.com
...
</VirtualHost>
如果无法做到这一点,您可以提取host
部分并进行内部重写
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !^(?www\.)?example\.com$
RewriteCond %{HTTP_HOST} ^(.+)\.com$
RewriteRule ^ /index.php?prefix=customer/%1&request=%{REQUEST_URI} [L,QSA]
答案 1 :(得分:1)
使用变量$ _SERVER ['HTTP_HOST']并根据请求的主机加载不同的视图。确保您处理所需的所有子主机并且还有一个默认页面