Problem with mod_rewrite after moving to a new server

Discussion in 'Apache' started by trevis, Apr 23, 2007.

  1. #1
    I recently switched from dreamhost hosting, to a dedicated server to host my site. I've got apache 1.3.34 (also tried 2.x) installed along with php5. I have rewrite rules declared in the .htaccess file located in the root directory of my site, and mod_rewrite is loaded. The problem seems to be that some rules are working, and some are not. For example, /code/ will rewrite to code.php, and /code/This_code_title/ will rewrite to code.php as well, even though /code/This_code_title/ should be rewriting to code.php?title=This_code_title. I've tried commenting out the entire .htaccess file, and still, /code/ will rewrite to code.php, although others, like /home/ will throw a 404, which is what I would expect after commenting out the rewrite rule. The problem seems to be with rewriting to urls that include get variables, at least that is what I've noticed. As far as why its still rewriting after I comment out all of the rewrite rules, I have no idea. Like I said, this was all working fine on another server, but with this new server, things are behaving unexpectedly. Below is my htaccess file, any help is greatly appreciated, as I've been trying to figure out this problem for a few days now..
    
    ErrorDocument 400 /error.php
    ErrorDocument 401 /error.php
    ErrorDocument 403 /error.php
    ErrorDocument 404 /error.php
    ErrorDocument 500 /error.php
    
    RewriteEngine on
    
    #block includes, cache
    RewriteRule ^includes / [F]
    RewriteRule ^cache / [F]
    
    #redir to /home/
    RewriteRule ^$ /home/ [R]
    
    #home
    RewriteRule ^home$ /home/ [R]
    RewriteRule ^home/$ index.php
    
    #code
    RewriteRule ^code/(\w+)$ /code/$1/ [R]
    RewriteRule ^code/(\w+)/$ code.php?title=$1 [R]
    RewriteRule ^code/viewlang/(\w+)/$ code.php?lang=$1
    RewriteRule ^code/viewtag/(\w+)/$ code.php?tag=$1
    RewriteRule ^code/(\w+)/(\w+)/$ code.php?title=$1&action=$2
    RewriteRule ^code$ /code/ [R]
    RewriteRule ^code/$ code.php
    
    #gallery
    RewriteRule ^gallery$ /gallery/ [R]
    RewriteRule ^gallery/$ gallery.php
    RewriteRule ^gallery/tagged/(\w+)$ /gallery/tagged/$1/ [R]
    RewriteRule ^gallery/tagged/(\w+)/$ gallery.php?tag=$1
    RewriteRule ^gallery/image/(\w+)$ /gallery/image/$1/ [R]
    RewriteRule ^gallery/image/(\w+)/$ gallery.php?image=$1
    RewriteRule ^gallery/(\w+)$ /gallery/$1/ [R]
    RewriteRule ^gallery/(\w+)/$ gallery.php?gallery=$1
    
    #links
    RewriteRule ^links$ /links/ [R]
    RewriteRule ^links/$ links.php
    
    #feeds
    RewriteRule ^feed$ /feed/ [R]
    RewriteRule ^feed/$ feed.php
    RewriteRule ^feed/(\w+)$ /feed/$1/ [R]
    RewriteRule ^feed/(\w+)/$ feeds.php?feed=$1
    
    #blog
    RewriteRule ^blog$ /blog/ [R]
    RewriteRule ^blog/$ blog.php
    RewriteRule ^blog/(\w+)$ /blog/$1/ [R]
    RewriteRule ^blog/(.+)/$ blog.php?post=$1
    
    #search
    RewriteRule ^search$ /search/ [R]
    RewriteRule ^search/(.*)$ search.php$1
    
    #projects
    RewriteRule ^projects$ /projects/ [R]
    RewriteRule ^projects/$ projects.php
    RewriteRule ^projects/tagged/(\w+)$ /projects/$1/ [R]
    RewriteRule ^projects/tagged/(.+)/$ projects.php?tag=$1
    RewriteRule ^projects/(\w+)$ /projects/$1/ [R]
    RewriteRule ^projects/(.+)/$ projects.php?post=$1
    
    #downloads
    RewriteRule ^downloads$ /downloads/ [R]
    RewriteRule ^downloads/$ downloads.php
    RewriteRule ^downloads/tagged/(\w+)$ /downloads/$1/ [R]
    RewriteRule ^downloads/tagged/(.+)/$ downloads.php?tag=$1
    RewriteRule ^downloads/(\w+)$ /downloads/$1/ [R]
    RewriteRule ^downloads/(.+)/$ downloads.php?post=$1
    
    #contact me
    RewriteRule ^contact$ /contact/ [R]
    RewriteRule ^contact/ contact.php
    
    #tagged
    RewriteRule ^tagged$ /tagged/ [R]
    RewriteRule ^tagged/$ tagged.php
    RewriteRule ^tagged/(\w+)$ /tagged/$1/ [R]
    RewriteRule ^tagged/(\w+)/$ tagged.php?section=$1
    RewriteRule ^tagged/(\w+)/(\w+)$ /tagged/$1/$2/ [R]
    RewriteRule ^tagged/(\w+)/(\w+)/$ tagged.php?section=$1&tag=$2
    
    #admin
    RewriteRule ^admin$ /admin/ [R]
    RewriteRule ^admin/$ /admin.php
    RewriteRule ^admin/(\w+)$ /admin/$1/ [R]
    RewriteRule ^admin/(\w+)/$ /admin.php?action=$1
    RewriteRule ^admin/(\w+)/(\w+)/$ /admin.php?action=$1&info=$2
    
    Code (markup):

     
    trevis, Apr 23, 2007 IP
  2. Nintendo

    Nintendo ♬ King of da Wackos ♬

    Messages:
    12,890
    Likes Received:
    1,064
    Best Answers:
    0
    Trophy Points:
    430
    #2
    RewriteEngine on

    to

    Options +FollowSymLinks +Indexes
    RewriteEngine on
    RewriteBase /


    and try ([^.]+)
     
    Nintendo, Apr 23, 2007 IP