.htaccess - URL Rewrite GET parameters -


i want url following

www.website.com/home&foo=bar&hello=world

i want first parameter change

however actual "behind scenes" url this

www.website.com/index.php?page=home&foo=bar&hello=world

all tutorials find change of parameters.

any appreciated!

add .htaccess in web root / directory

rewriteengine on rewritebase /  rewriterule ^home$ index.php?page=home&%{query_string} [nc,l] 

if want work pages i.e. /any-page gets served index.php?page=any-page use

rewriteengine on rewritebase /  rewritecond %{request_filename} !-d # not dir rewritecond %{request_filename} !-f # not file rewriterule ^(.*)$ index.php?page=$1&%{query_string} [nc,l] 


how these rules work?

a rewriterule has following syntax

rewriterule [pattern] [substitution] [flags] 

the pattern can use regular expression , matched against part of url after hostname , port (with .htaccess placed in root dir), before query string.

first rule

the pattern ^home$ makes first rule match incoming url www.website.com/home. %{query_string} captures , appends after /home? internally substituted url index.php?page=home.

the flag nc makes rule non case-sensitive, matches /home or /home well. , l marks last i.e. rewriting should stop here in case there other rules defined below.

second rule

this one's more generic i.e. if of site pages follow url pattern instead of writing several rules, 1 each page, use generic one.

the .* in pattern ^(.*)$ matches /any-page-name , parentheses capture any-page-name part $1 variable used in substitution url index.php?page=$1. & in page=home& , page=$1& separator used between multiple query string field-value pairs.

finally, %{query_string} , [nc,l] flags work same in rule one.


Comments

Popular posts from this blog

css - Which browser returns the correct result for getBoundingClientRect of an SVG element? -

gcc - Calling fftR4() in c from assembly -

.htaccess - Matching full URL in RewriteCond -