apache - flexibility in .htaccess for mod_rewrite rules -


i redirect old php files new seo friendly ones:

user.php?user=$var1&task=$var2 -> url/$var1/$var2

there 2 problems. $var2 not set every time, not know how deal , querystring added @ end.

i use following redirect rule testing (without $var2)

rewritecond %{the_request} ^(.+)user\.php(.+)$ rewritecond %{query_string} user=([^/]+)$ rewriterule ^(.+)\.php$ %1 [r] 

i this:

    url/$var1/?user=$var1 

second problem rewrite rule url/$var1 -> user.php?user=$var1 without server error.

in moment tried static 1 testing, not rule condition wrong here

rewritecond %{request_filename} !-f rewriterule ^([^/]+)/?$ user.php?user=$1 [l] 

how correct results , more flexibility variables? mod_rewrite not world in moment, hope can bring light in dark.

thx ruven

1) way prevent query string @ end there add ? @ end of url rewrite to.

rewritecond %{the_request} ^get\ /user\.php rewritecond %{query_string} user=([^&=]+)$ rewriterule ^user\.php %1? [r] 

and in case both var1 , var2 set be

rewritecond %{the_request} ^get\ /user\.php rewritecond %{query_string} user=([^&=]+)$ rewritecond %{query_string} task=([^&=]+)$     rewriterule ^user\.php %1/%2? [r] 

combine these (the second 1 first) , should redirect needed

2) since kind of 'catch all' url should put last option in .htaccess , redirect everything not file or directory user.php , let user.php figure out if user exists, , if not respond http 404.

rewritecond %{request_filename} !-f rewritecond %{request_filename} !-d rewriterule ^([^/]+)$ user.php?user=$1 [l] 

(i've removed / @ end it's not idea have 2 urls exact same content).


Comments

Popular posts from this blog

php - mySql Join with 4 tables -

css - Text drops down with smaller window -

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -