Hi,
I want to rewrite some url using .htaccess.
eg: Source url
http://localhost/demo/a/b
http://localhost/demo/x/y/z
http://localhost/demo/something/else
in to this form (1st form)
http://localhost/demo/index.php?q=a/b
http://localhost/demo/index.php?q=a/b
http://localhost/demo/index.php?q=something/else
OR this form (2nd form)
http://localhost/demo/index.php/a/b
http://localhost/demo/index.php/a/b
http://localhost/demo/index.php/something/else
I ve used the following code for this to achieve the first form.
RewriteEngine On
RewriteBase /demo/
RewriteRule ^(.*)$ index.php?q=$1
Now the request is going to index.php, but my question in how can get the new rewritten url. ie, http://localhost/demo/index.php?q=a/b .
$_SERVER[‘QUERY_STRING’] contains “q=demo.php” which mean nothing to me.
Please Help me… how can i do the rewriting. Ive googled and got some codes but not working. I need code for both form and want to know how can i access the both rewritten url.
Thanks in advance…
ralphm
February 14, 2011, 2:08pm
2
Hi tanithin. Welcome to SitePoint!
We’ve moved this question to a more appropriate forum.
rpkamp
February 15, 2011, 11:22am
3
It’s not entirely clear to me what you’re asking here.
When does $_SERVER[‘QUERY_STRING’] contain “q=demo.php” ?
Why are you using $_SERVER[‘QUERY_STRING’] and not $_GET ?
Also, are you using Redirect or RedirectMatch anywhere? If not, drop the RewriteBase.
I found the problem with my code it was “looping in htaccess rewrite”. Solved it by puttng RewriteCond %{ENV:REDIRECT_STATUS} ^$.
I want to display the new redirected path ie, “http://localhost/demo/index.php?q=a/b ” for the request “http://localhost/demo/a/b ”.
Is the following code is the best way to do this ?
//got $_SERVER['SCRIPT_NAME'] = /demo/index.php
if( $_SERVER['QUERY_STRING'] )
{
echo 'http://localhost' . $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['QUERY_STRING'] ;
}
Im getting the result, but is there any direct way to access rewritten url ?
rpkamp
February 15, 2011, 4:26pm
5
No I don’t of any faster way. I’d use the same way myself.
You could try
print_r($_SERVER);
to see if there is anything of you’re liking, but I don’t think there is.