.htaccess rewrite "/book.php?id=1234" to "/book/1234"
Solution 1:
Your RewriteRule
as written appears to be trying to do opposite of what your question headline is saying. You say that you want htaccess rewrite /book.php?id=1234 to /book/1234
, but your RewriteRule
:
RewriteRule ^(.*)$ /book.php?url=$1 [L]
Is adding a query string parameter.
The RewriteRule below will rewrite rewrite /book.php?id=1234 to /book/1234
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule ^book\.php$ /book/%1? [L]
Also, if you really wish to go the other way, i.e. rewrite /book/1234
to /book.php?id=1234
the following should do that:
RewriteRule ^book/(.*)$ /book.php?id=$1 [L]
Solution 2:
try this!
# in htaccess file write this
RewriteEngine on
RewriteRule ^book/([0-9]+) book.php?id=$i
# and in you html or php file call
book.php?id=$i
page by
book/$i
you are done.