【发布时间】:2016-01-15 20:50:12
【问题描述】:
在 SO 中尝试了很多示例,但似乎都没有。考虑一下我的设置:
/public_html/
/app/
/cgi-bin/
/lib/
/plugins/
/revamp/
/vendors/
我目前有一个 cakephp 网站 site.com,其文件位于 /app/ 文件夹下,我现在使用的 .htaccess 如下所示:
<IfModule mod_rewrite.c>
RewriteEngine on
ReWriteRule ^$ app/webroot/ [L]
ReWriteRule (.*) app/webroot/$1 [L]
</IfModule>
我想将子域revamp.site.com 重定向到文件夹/revamp/,这将是另一个 cakephp 站点。
更新 1:
被要求创建一个虚拟主机,我做到了,它设置为子域文件夹,我想要的帮助是让 htaccess 规则适用于上述两个规则,如果请求的地址具有子域,还重定向到子域在域名之前就可以了...
更新 2:
以下.htaccess 将我带到我的子域,但仅限于 index.html
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site\.com$
RewriteRule (.*) app/webroot/$1 [L]
RewriteCond %{HTTP_HOST} ^revamp\.site\.com$
RewriteRule (.*) revamp/index.html [L]
</IfModule>
它是两个答案的混合......尽管我在子域中放置了任何路径,它只会让我进入 index.html(因为它是在 htaccess 中硬编码的)。还尝试了revamp/$ 和revamp/$1,但没有成功。
更新 3:
尝试编辑第一个答案:
<IfModule mod_rewrite.c>
RewriteEngine on
#subdomain simple site
RewriteCond %{HTTP_HOST} ^subdomain\.test\.com$
RewriteCond %{REQUEST_URI} !^/subdomain
RewriteRule ^(.*)$ subdomain/$1 [L]
#cakephp site
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
还是给了500,我也试过切换两个方块的位置
更新 4:
有效的解决方案,在 /public_html/app 和 /public_html/revamp/app 下拥有两个 cakephp 站点
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^revamp\.site\.com$
RewriteRule ^(.*)$ revamp/app/webroot/$1 [NC,L]
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [NC,L]
</IfModule>
【问题讨论】:
-
您使用的是共享主机吗?
-
设置另一个 VirtualHost 进行改造并将 DocumentRoot 设置为 /revamp
-
@DavidAguilar 我正在使用 VPS 是的
-
@user2182349 我一直被告知我的网络主机不要从 vhost 更改根目录,因为它会在每次 apache 需要重建时重置,他们建议我使用 htaccess 额外规则来引导寻找子域的流量
-
将 revamp 放入第一个文件夹的 app/webroot 文件夹不是更容易吗?有理由不这样做吗?