Home > Software engineering >  RewriteRule gives me unwanted $_GET param
RewriteRule gives me unwanted $_GET param

Time:07-08

I need video/5 to be video.php?id=5

RewriteRule ^video$ video.php [L]
RewriteRule ^video/([^/]*)/?$ video.php?id=$1 [QSA,NC,L]

esentially - the above code works - but here is a problem:

video/ - without id - gives me an empty string as $_GET['id']

so if I write:

if(isset($_GET['id']))... - the result is true and the value is ""

how to avoid this ?

I want just video/ - without any $_GET variable - except it is set explicitly - for example - video/5

CodePudding user response:

With your shown samples, please try following htaccess rules. Make sure to clear your browser cache before testing your URLs.

RewriteEngine ON
##Internal rewrite to video.php without $1 in it.
RewriteRule ^video/?$ video.php [NC,L]

##Rules for internal rewrite with passing id query string to it.
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^video/([^/]*)/?$ video.php?id=$1 [QSA,NC,L]
  • Related