mod_rewrite rule doesn't consider "/" character

Discussion in 'Apache' started by php_guest, Oct 1, 2009.

  1. #1
    I would like that everybody type www.domainname.com/cars/post-title will get post.php?category=car&url=post-title
    AND
    everybody type www.domainname.com/blog-title will get blog.php?url=blog-title

    I wrote in htaccess the following lines:
    1. RewriteRule ^cars/?([-a-zA-Z_&0-9&,!]+).html$ post.php?category=car&url=$1
    2. RewriteRule ^/?([-a-zA-Z_&0-9&,!]+).html$ blog.php?id=$1

    The problem is if user type www.domainname.com/cars-some-text it sends to post.php and not blog.php because it take the first rule even if there is no "/" after "cars". Please tell me how I can write that it sends to cars/ only if there is also "/" in cars/ and not only "cars".
     
    php_guest, Oct 1, 2009 IP
  2. php_guest

    php_guest Peon

    Messages:
    17
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #2
    I tried dobule /, so RewriteRule ^cars//?([-a-zA-Z_&0-9&,!]+).html$ post.php?category=car&url=$1 and it works. I am not sure why, but it works!
     
    php_guest, Oct 1, 2009 IP
  3. php_guest

    php_guest Peon

    Messages:
    17
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3
    The problem was in ? because question mark means that a character before is not a condition. Now I removed ? and it works perfectly.
     
    php_guest, Oct 1, 2009 IP