因此,我尝试在 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" )