问题:
我使用Kohana/PHP为其他公司开发托管网站.我让客户在他们的DNS服务器中输入CNAME条目以指向我的域.例如.http://invites.somecompany.com指向http://www.mydomain.com.
因此,我的apache服务器上的%{HTTP_HOST}条目是'invites.somecompany.com'
我想重写 http://invites.somecompany.com/invite到http://www.mydomain.com/invites/invite
即使Apache似乎这样做,$ _SERVER ['REQUEST_URI']仍然是"/".问题是Kohana使用$ _SERVER ['REQUEST_URI']将请求路由到适当的控制器代码.在这种情况下,它将它路由到基本索引控制器,而不是" 邀请 "控制器.
事实:
我正在使用的Apache mod_rewrite指令(在.htaccess文件中): -
RewriteCond %{HTTP_HOST} !^www.mydomain.com$
RewriteCond %{REQUEST_URI} !.*invites.*
RewriteRule ^(.*)$ invites/$1
# For Kohana
RewriteRule .* index.php?kohana_uri=$0 [PT,QSA,L]
Run Code Online (Sandbox Code Playgroud)
在index.php中,我这样做:
var_dump($_SERVER);
Run Code Online (Sandbox Code Playgroud)
我得到:
'REQUEST_URI' => string '/',
'QUERY_STRING' => string 'kohana_uri=invites/index.php&kohana_uri=invites/invite'
'REDIRECT_QUERY_STRING' => string 'kohana_uri=invites/invite'
Run Code Online (Sandbox Code Playgroud)
那么mod_rewrite不会修改REQUEST_URI?
需要:
'REQUEST_URI' => 'invites/invite',
'QUERY_STRING' => string 'kohana_uri=invites/invite',
Run Code Online (Sandbox Code Playgroud)
我怎么做到的?
======================编辑
重写日志条目: -
strip per-dir prefix: /Users/project/invite -> invite …Run Code Online (Sandbox Code Playgroud)