我正在启动一个项目,需要使用相同的(自定义)框架从一个服务器/ IP托管8个网站。
我需要做的是为每个网站使用单独的应用文件夹。这部分很简单,只需复制文件夹结构即可。我遇到问题的部分是.htaccess
。
每个应用程序文件夹的设置如下:
- application
-controller
-view
-www
-css
-js
-img
现在,需要进行的是需要设置文件请求才能获取它们,并且任何非文件请求都会转到单个应用程序的引导程序文件中......再次说明这部分很容易,如同我在webroot中有一个.htaccess
文件,可以在请求到达后处理它。
我需要的是,在主根文件夹中,使用.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]
基本上,我需要使用相同的框架为多个域复制这个。
如果有任何帮助,应用程序文件夹的名称与域名相同!
答案 0 :(得分: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 。