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
Post a Comment