Apache 2的mod_rewrite和PHP。 修改htaccess的$ _SERVER 值?

我有这个.htaccess文件:

 RewriteEngine On RewriteRule ^hello$ goodbye RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^ index.php [L] 

所以我收到了index.php上的所有请求,但是在询问hello时候我收到了你的hello当我从PHP打印$_SERVER['REQUEST_URI']时,我希望收到goodbye

也就是说, $_SERVER['REQUEST_URI']似乎是不可变的,即使在匹配引用index.php的RewriteRule之前已经重写了URL。 有没有办法修改这个值?

我想要这样做,为一些现有的代码添加一个简单的URL预处理层,而不需要修改PHP文件。 所以我试图坚持在.htaccess

首先你犯了一个错误,不要把LPT标志放在你的第一条规则里。 你的代码应该是这样的:

 RewriteRule ^hello$ goodbye [PT] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^ index.php [L] 

一旦这个代码在index.php访问这个变量:

 $_SERVER["REDIRECT_URL"] 

这将有价值: /goodbye

编辑

如果在主机上启用了mod_proxy ,则可以将第一条规则设置为:

 RewriteRule ^hello$ /goodbye [P] 

然后你将有: $_SERVER["REQUEST_URI"]=/goodbye