Ok, I see.
The problem here seems to be that by using a mod_rewrite re-route, you are essentially making two requests. - mod_rewrite internally re-directs you from the original URL to the re-written version.
So when you start out like this:
-
http://example.com/Restaurants/F%26B
Apache takes the original URL and translates %26 to & (as per usual), and then hands it over to mod_rewrite, which re-writes the URL and redirects you, using & instead of %26.
-
http://example.com/restaurant_rating.php?alias=F&B
Which again, makes the URL invalid (the & being read as a variable seperator, rather than a part of the value.)
What you need to do to overcome this, is to manipulate the original URL so that when it is re-written by mod_rewrite, the outcome of the redirect is a valid URL. - To that end, you can encode the % in the %26 value, so when it is rewritten it becomes just a normal %.
-
http://example.com/Restaurants/F%2526B
Which is translated to
-
http://example.com/restaurant_rating.php?alias=F%26B
From which PHP can extract "F&B".
P.S.
Also take into account, that if mod_rewrite does multiple re-writes (chain rewrites), then each of them would need to be accounted for.
... You may well be better of either using an ID rather than a name, or restrict names to non-special characters.