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
.
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
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With