Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Apache 2 mod_rewrite and PHP. Modify $_SERVER['REQUEST_URI'] value from htaccess?

I have this .htaccess file:

RewriteEngine On

RewriteRule ^hello$ goodbye

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

So I'm receiving all the requests on index.php, but I get hello when asking for hello, and I expected to receive goodbye when printing $_SERVER['REQUEST_URI'] from PHP.

That is, $_SERVER['REQUEST_URI'] seems inmutable, even when the URL has been rewritten already before matching the RewriteRule referring index.php. Is there any way to modify this value?

I want to do this to add a thin and simple layer of URL preprocessing to some existing code, without modifying the PHP files. So I'm trying to stick inside the .htaccess.

like image 766
Jorge Suárez de Lis Avatar asked Sep 04 '13 15:09

Jorge Suárez de Lis


1 Answers

First of all you made a mistake of not putting L or PT flag in your first rule. Your code should be like this:

RewriteRule ^hello$ goodbye [PT]

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

Once that code is there access this variable in index.php:

$_SERVER["REDIRECT_URL"]

This will have value: /goodbye

EDIT

If you have mod_proxy enabled on your host, you can have your first rule as:

RewriteRule ^hello$ /goodbye [P]

And then you will have: $_SERVER["REQUEST_URI"]=/goodbye

like image 189
anubhava Avatar answered Oct 06 '22 22:10

anubhava