1

假设我有一个应用程序example.com.

一位客户可能会在example.com/customer/hisname/.

好吧,我想让客户为他的内容分配一个域,比如说hisname.com,所以这个(hisdomain.com)呈现example.com/customer/hisname/

为此,我创建了两个虚拟主机,它们的根目录都在同一个位置,并且我编写了一个 .htaccess 文件以过滤 http_host,如果不是 example.com,则以传递请求的方式重写到 example.com/customer/hisname/。

尽管如此,当我没有在 URI 中获得 /customer/hisname/ 部分时,这种方法仍然不起作用。如果我访问 example.com/index.php 中的 hisname.com/list/,我需要同时拥有 /list/ 和(作为前缀)/customer/hisname/,我只会得到,如您所料只是/列表/。

那么,什么是正确的方法呢?

4

2 回答 2

2

如果可以创建虚拟主机,则应设置正确的文档根目录,而不是使用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]
于 2013-03-31T13:37:51.427 回答
1

使用变量 $_SERVER['HTTP_HOST'] 并​​根据请求的主机加载不同的视图。确保您处理所有需要的子主机并有一个默认页面

于 2013-03-31T13:40:36.747 回答