背景
我有一个 CakePHP 应用程序,它位于/m/
. 我想编写一个根级.htaccess
文件,它将站点的“子域”作为参数重定向到操作。
例如:我想编写一个重写规则,这将导致像这样的重定向 -
http://mysite.myserver.com
→http://myserver.com/m/mysite/
http://mysite.myserver.com/home
→http://myserver.com/m/mysite/home
http://mysite.myserver.com/foo/bar?baz=true
→http://myserver.com/m/mysite/foo/bar?baz=true
理想情况下,这个重定向应该对用户不可见(我不想使用 301,因为我不想更改 URL)。
这是我目前的尝试:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.myserver\.com$ [NC]
RewriteRule ^(.*)$ http://myserver.com/m/%1/$1 [L]
</IfModule>
据我所知,主要问题在于$_SERVER['REQUEST_URI']
:
- 如果我
http://myserver.com/m/mysite/home
直接浏览到,$_SERVER['REQUEST_URI'] = /m/mysite/home
. - 如果我浏览到
http://mysite.myserver.com/home
使用.htaccess
上面的文件,$_SERVER['REQUEST_URI'] = /home
.
问题
由于 的问题$_SERVER['REQUEST_URI']
,我的路线无法正确解析:它试图将用户带到/home
而不是/m/mysite/home
按照需要。
如何更改我的重写规则以使其正常工作?还有另一种方法可以做到这一点吗?