Apache 2 mod_rewrite和PHP。从htaccess修改$ _SERVER ['REQUEST_URI']值?

时间:2013-09-04 15:38:07

标签: php apache .htaccess mod-rewrite

我有这个.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,我希望在打印时收到goodbye {来自PHP的{1}}。

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

我想这样做是为了在不修改PHP文件的情况下为一些现有代码添加一个简单而简单的URL预处理层。所以我试图坚持index.php

1 个答案:

答案 0 :(得分:6)

首先,您错误地将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