小编Ajo*_*joy的帖子

使用APACHE RewriteRule不会覆盖REQUEST_URI?

问题:

我使用Kohana/PHP为其他公司开发托管网站.我让客户在他们的DNS服务器中输入CNAME条目以指向我的域.例如.http://invites.somecompany.com指向http://www.mydomain.com.

因此,我的apache服务器上的%{HTTP_HOST}条目是'invites.somecompany.com'

我想重写 http://invites.somecompany.com/invitehttp://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)

php apache dns mod-rewrite kohana

10
推荐指数
1
解决办法
6768
查看次数

标签 统计

apache ×1

dns ×1

kohana ×1

mod-rewrite ×1

php ×1