For example, if I rewrite /category/topic/post/
to /index.php?cat=1&topic=2&post=3
, how can I get /index.php?cat=1&topic=2&post=3
using PHP?
URL rewriting purpose is to change the appearance of the URL to a more user-friendly URL. This modification is called URL rewriting. For example, http://example.com/form.html can be rewritten as http://example.com/form using URL rewriting.
mod_rewrite provides a flexible and powerful way to manipulate URLs using an unlimited number of rules. Each rule can have an unlimited number of attached rule conditions, to allow you to rewrite URL based on server variables, environment variables, HTTP headers, or time stamps.
You can recreate it pretty easily. $_SERVER['PHP_SELF']
will still give you the correct file name for the script. This should do the trick:
$url = $_SERVER['PHP_SELF'];
$parts = array();
foreach( $_GET as $k=>$v ) {
$parts[] = "$k=" . urlencode($v);
}
$url .= "?" . implode("&", $parts);
$url
will now be the URL you're looking for.
EDIT: @carpereret's answer is far better. Upvote him instead
original uri should be in $_SERVER['REQUEST_URI']
You can set environment variable in mod_rewrite rule and then use it in PHP. Example:
mod_rewrite:
RewriteEngine on
RewriteRule ^/(category)/(topic)/(post)/$ /index.php?cat=$1&topic=$2&post=$3 [L,QSA,E=INDEX_URI:/index.php?cat=$1&topic=$2&post=$3]
PHP:
$index_uri = $_SERVER['INDEX_URI'];
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