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

Jor*_*Lis 8 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]
Run Code Online (Sandbox Code Playgroud)

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

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

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

anu*_*ava 6

首先,你犯了一个错误,就是不在你的第一条规则中放置LPT标记.你的代码应该是这样的:

RewriteRule ^hello$ goodbye [PT]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]
Run Code Online (Sandbox Code Playgroud)

一旦该代码访问此变量index.php:

$_SERVER["REDIRECT_URL"]
Run Code Online (Sandbox Code Playgroud)

这将有价值: /goodbye

编辑

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

RewriteRule ^hello$ /goodbye [P]
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢,但我需要从`$ _SERVER ['REQUEST_URI']`获取URL,而不是`$ _SERVER ['REDIRECT_URL']`,因为我不想修改原始的PHP代码.那可能吗? (2认同)