2

我正在启动一个项目,该项目需要使用相同的(自定义)框架从一个服务器/IP 托管 8 个网站。

我需要做的是为每个站点使用单独的应用程序文件夹。这部分很简单,只需复制文件夹结构即可。我遇到问题的部分是.htaccess.

每个应用程序文件夹的设置如下:

- application
  -controller
  -view
  -www
    -css
    -js
    -img

现在,需要发生的是需要设置对文件的请求来获取它们,并且任何不是文件的请求都会转到单个应用程序的引导文件......这部分很简单,因为我有一个.htaccess一旦请求到达那里,webroot 中的文件就可以处理。

我需要的是,在主根文件夹中,用于.htaccess根据用户访问的域来决定要访问的应用程序。

当只有一个应用程序文件夹可以访问时,我的 htaccess 重定向部分如下所示:

RewriteEngine on

RewriteCond     %{DOCUMENT_ROOT}/application/www%{REQUEST_URI} -d
RewriteRule     ^(.*[^/])$ /$1/                 [R=301,L]

RewriteRule ^$  application/www/        [L]
RewriteRule (.*)    application/www/$1      [L]

基本上,我需要使用相同的框架为多个域复制它。

应用程序文件夹的名称与域名相同,如果有帮助的话!

4

1 回答 1

1

尝试这个:

RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/%{HTTP_HOST}/www%{REQUEST_URI} -d
RewriteRule ^(.*[^/])$ /$/ [R=301,L]

RewriteRule ^$ application/www/ [L]

RewriteCond %{DOCUMENT_ROOT}/%{HTTP_HOST}/www%{REQUEST_URI} -d [OR]
RewriteCond %{DOCUMENT_ROOT}/%{HTTP_HOST}/www%{REQUEST_URI} -f
RewriteRule ^(.*)$ application/www/$1 [L]

最后一条规则上面的 2 个条件确保请求的资源确实存在于应用程序的 www 文件夹中,否则 404 消息会暴露文件夹结构。

您可能需要使用一些规则(在这些规则之上)规范化主机名,如下所示:

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

强制主机名以www

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

从主机名中删除www 。

于 2012-08-22T22:17:05.553 回答