问题:重定向 uri 以删除 lighttpd 下路径中的“http://”

问题:重定向 uri 以删除 lighttpd 下路径中的“http://”

因此,我尝试在 lighttpd 下执行此重定向,但出于某种原因,我只是不能让它工作。我尝试查看调试日志等。

说我已经进入http://mydomain.com/http://test.com我希望 lighttpd 将其重定向到http://mydomain.com/test.com

这是我的配置,据我所知它应该可以工作。就像 lighttpd 只是忽略了重定向规则(但其他的规则可以工作)。

重定向是底部的最后一个。

# 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_fastcgi",
#           "mod_evhost",
#           "mod_usertrack",
#           "mod_rrdtool",
#           "mod_webdav",
            "mod_expire",
#           "mod_flv_streaming",
            "mod_evasive"
)

#### performance options (aggressive timeouts)
server.max-keep-alive-requests = 6
server.max-keep-alive-idle = 15
server.max-read-idle     = 15
server.max-write-idle    = 15
connection.kbytes-per-second = 256
evasive.max-conns-per-ip = 5

#### name the server daemon publicly displays
server.tag               = "'; DROP TABLE servertypes; --"

#### disable ssl if not needed
ssl.engine               = "disable"

## 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"

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

##
## mimetype mapping
##
mimetype.assign             = (
  ".pdf"          =>      "application/pdf",
  [...]
  ".oth"          =>      "application/vnd.oasis.opendocument.text-web",

# make the default mime type application/octet-stream.
  ""              =>      "application/octet-stream",
)

#### 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          = "disable"

## 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", "image/png")


#### url handling modules (rewrite, redirect, access)
# url.rewrite                 = ( "^/$"             => "/server-status" )
# url.redirect                = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )

#
# 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")
$HTTP["url"] =~ "\.(jpg|gif|png|css|js)$" {
     expire.url = ( "" => "access 7 days" )
}

#### 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"


fastcgi.server = ( ".php" => ((
            "bin-path" => "/usr/bin/php-cgi",
            "socket" => "/tmp/php.socket",
            "max-procs" => 1,
            "min-procs" => 1,
            "bin-environment" => (
                        "PHP_FCGI_CHILDREN" => "5",
                        "PHP_FCGI_MAX_REQUESTS" => "500" 
                ),
            "broken-scriptfilename" => "enable"
          )))


$HTTP["host"] =~ "^78\.129\.251\.116$" {
        url.redirect = ( "^/(.*)" => "http://dev.samp.im" )
}

$HTTP["host"] =~ "^www\.(.*)" {
    url.redirect = ( "^/(.*)" => "http://%1/$1" )
}

$HTTP["host"] =~ "^dev\.samp\.im$" {
    dir-listing.activate = "enable"
}   

$HTTP["host"] =~ "^isitup\.org$" {
    url.redirect = ( "^/http://(.*)" => "http://isitup.org/$1" )

    url.rewrite-once = (
    "^/$"         => "/index.php",
    "^/mint/(.*)$"    => "/mint/$1",
    "^/fever/(.*)$"   => "/fever/$1",
    "^/check.php(.*)$" => "/check.php$0",
    "^/offline$"      => "/offline.php",
    "^/error$"        => "/error.php",
    "^/save/(.*)$"    => "/index.php?d=$1&save",
    "^/d/(.*)$"       => "/index.php?d=$1",
    "^/clear$"        => "/index.php?clear",
    "^/(.*)\.(json|txt)$" => "/check.php?domain=$1&output=$2",
    "^/(.*)\.(php|html|png|jpg|css|gif|js)" => "$0",
    "^/(.*)$"     => "/check.php?domain=$1" )
}

答案1

url.rewrite-once之前处理url.redirect- 重写的最终规则与请求匹配,并对其进行修改:

"^/(.*)$"     => "/check.php?domain=$1"
http://mydomain.com/http://test.com -> http://mydomain.com/check.php?domain=http://test.com

发生重写后,重定向将被评估;它不再匹配。您需要删除有问题的重写才能成功重定向。

答案2

尝试转义冒号和斜线并捕获字符串的末尾:

url.redirect = ( "^/http\:\/\/(.*)$" => "http://isitup.org/$1" )

相关内容