Project

General

Profile

Problems with .htaccess to lighttpd.conf

Added by awmen over 14 years ago

Hello,
I'm having problems converting this .htaccess into a proper lighttpd mod_rewrite rule, this is the .htaccess I have to covnert:

RewriteEngine on
#RewriteBase /

# Do not process images or CSS files further
RewriteRule \.(css|jpe?g|gif|png|js)$ - [L]

# Leave /admin and /install static
RewriteRule ^(admin|install).*$ - [L]

# Rewrite web pages to one master page
RewriteRule ^([^/\.]+)/?$ index.php?page=$1 [QSA,L]
RewriteRule ^([^/\.]+)/([^/]+)/?$ index.php?page=$1&id=$2 [QSA,L]
RewriteRule ^([^/\.]+)/([^/]+)/([^/]+)/? index.php?page=$1&id=$2&subpage=$3 [QSA,L]

This is what I have been suggested:

url.rewrite-once = (
        "^.*\.(css|jpg|jpeg|gif|png|js)" => "$0",
        "^(admin|install).*$" => "$0",
        "^([^/\.]+)/?(?:\?(.*))$" => "index.php?page=$1&$2",
        "^([^/\.]+)/?$" => "index.php?page=$1",
                "^([^/\.]+)/([^/]+)/?(?:\?(.*))$" => "index.php?page=$1&id=$2&$3",
        "^([^/\.]+)/([^/]+)/?$" => "index.php?page=$1&id=$2",
        "^([^/\.]+)/([^/]+)/([^/]+)/?" => "index.php?page=$1&id=$2&subpage=$3" 
)

And finally this is what I have under /etc/lighttpd/lighttpd.conf:

  GNU nano 2.0.7                                 File: /etc/lighttpd/lighttpd.conf                                                                          

# Debian lighttpd configuration file
#

############ Options you really have to take care of ####################

## modules to load
# mod_access, mod_accesslog and mod_alias are loaded by default
# all other module should only be loaded if neccesary
# - saves some time
# - saves memory

server.modules              = (
            "mod_access",
            "mod_alias",
            "mod_accesslog",
            "mod_compress",
            "mod_rewrite",
            "mod_redirect",
#           "mod_evhost",
#           "mod_usertrack",
#           "mod_rrdtool",
#           "mod_webdav",
#           "mod_expire",
#           "mod_flv_streaming",
#           "mod_evasive" 
)
## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root       = "/var/www/" 

## where to upload files to, purged daily.
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )

## where to send error-messages to
server.errorlog            = "/var/log/lighttpd/error.log" 

## files to check for if .../ is requested
index-file.names           = ( "index.php", "index.html",
                               "index.htm", "default.htm",
                               "index.lighttpd.html" )

## Use the "Content-Type" extended attribute to obtain mime type if possible
# mimetype.use-xattr = "enable" 

#### accesslog module
accesslog.filename         = "/var/log/lighttpd/access.log" 

## deny access the file-extensions
#
# ~    is for backupfiles from vi, emacs, joe, ...
# .inc is often used for code includes which should in general not be part
#      of the document-root
url.access-deny            = ( "~", ".inc" )

##
# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

######### Options that are good to be but not neccesary to be changed #######

## Use ipv6 only if available.
include_shell "/usr/share/lighttpd/use-ipv6.pl" 

## bind to port (default: 80)
# server.port               = 81

## bind to localhost only (default: all interfaces)
## server.bind                = "localhost" 

## error-handler for status 404
#server.error-handler-404  = "/error-handler.html" 
#server.error-handler-404  = "/error-handler.php" 

## to help the rc.scripts
server.pid-file            = "/var/run/lighttpd.pid" 

##
## Format: <errorfile-prefix><status>.html
## -> ..../status-404.html for 'File not found'
#server.errorfile-prefix    = "/var/www/" 

## virtual directory listings
dir-listing.encoding        = "utf-8" 
server.dir-listing          = "enable" 

## send unhandled HTTP-header headers to error-log
#debug.dump-unknown-headers  = "enable" 

### only root can use these options
#
# chroot() to directory (default: no chroot() )
#server.chroot            = "/" 

## change uid to <uid> (default: don't care)
server.username            = "www-data" 

## change uid to <uid> (default: don't care)
server.groupname           = "www-data" 

#### compress module
compress.cache-dir          = "/var/cache/lighttpd/compress/" 
compress.filetype           = ("text/plain", "text/html", "application/x-javascript", "text/css")

#### url handling modules (rewrite, redirect, access)
# url.rewrite                 = ( "^/$"             => "/server-status" )
# url.redirect                = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
url.rewrite-once              = (
        "^.*\.(css|jpg|jpeg|gif|png|js)" => "$0",
        "^(admin|install).*$" => "$0",
        "^([^/\.]+)/?(?:\?(.*))$" => "index.php?page=$1&$2",
        "^([^/\.]+)/?$" => "index.php?page=$1",
                "^([^/\.]+)/([^/]+)/?(?:\?(.*))$" => "index.php?page=$1&id=$2&$3",
        "^([^/\.]+)/([^/]+)/?$" => "index.php?page=$1&id=$2",
        "^([^/\.]+)/([^/]+)/([^/]+)/?" => "index.php?page=$1&id=$2&subpage=$3" 
)

#
# define a pattern for the host url finding
# %% => % sign
# %0 => domain name + tld
# %1 => tld
# %2 => domain name without tld
# %3 => subdomain 1 name
# %4 => subdomain 2 name
#
# evhost.path-pattern = "/home/storage/dev/www/%3/htdocs/" 

#### expire module
# expire.url                  = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")

#### rrdtool
# rrdtool.binary = "/usr/bin/rrdtool" 
# rrdtool.db-name = "/var/www/lighttpd.rrd" 

#### variable usage:
## variable name without "." is auto prefixed by "var." and becomes "var.bar" 
#bar = 1
#var.mystring = "foo" 

## integer add
#bar += 1
## string concat, with integer cast as string, result: "www.foo1.com" 
#server.name = "www." + mystring + var.bar + ".com" 
## array merge
#index-file.names = (foo + ".php") + index-file.names
#index-file.names += (foo + ".php")

#### external configuration files
## mimetype mapping
include_shell "/usr/share/lighttpd/create-mime.assign.pl" 

## load enabled configuration files,
## read /etc/lighttpd/conf-available/README first
include_shell "/usr/share/lighttpd/include-conf-enabled.pl" 

#### handle Debian Policy Manual, Section 11.5. urls
## by default allow them only from localhost
## (This must come last due to #445459)
## Note: =~ "127.0.0.1" works with ipv6 enabled, whereas == "127.0.0.1" doesn't
$HTTP["remoteip"] =~ "127.0.0.1" {
        alias.url += (
                "/doc/" => "/usr/share/doc/",
                "/images/" => "/usr/share/images/" 
        )
        $HTTP["url"] =~ "^/doc/|^/images/" {
                dir-listing.activate = "enable" 
        }
}

And I'm having 404 errors as if rewrite rules weren't properly configured. Any clues?