Drupal 8 + Lighttpd由于URL重写而导致某些页面抛出404错误

时间:2018-08-16 21:58:09

标签: drupal url-rewriting drupal-8 lighttpd clean-urls

我们正在努力设置Drupal 8服务器,并且遇到了URL干净的问题。我们正在使用URL重写规则来处理干净的URL,但这会造成问题,因为某些D8 URL包含“。”。因此,例如,编辑内容类型的字段会在URL的末尾产生“ node.webform.body”。我们的网站正在读取该文件,然后抛出404错误。

我们需要以其他方式处理干净的URL,还是可以对重写规则进行更新?

我们正在运行:

Lighttpd 1.4.49

Drupal 8.5.6

我们的lighttpd.conf中包含以下内容:

url.rewrite-final = (
  "^/web/system/test/(.*)$" => "/web/index.php?q=system/test/$1",
  "^/web/([^.?]*)\?(.*)$" => "/web/index.php?q=$1&$2",
  "^/web/([^.?]*)$" => "/web/index.php?q=$1",
   "^/web/rss.xml" => "/web/index.php?q=rss.xml"
)

1 个答案:

答案 0 :(得分:0)

这就是我们最终要做的事情: 我们在url.rewrite-final中添加了以下重写规则。这些照顾所有情况 到目前为止,我们已经发现了404个。

flavors <- c("Apple mango", "Apple", "Cherry", "Cranberry", "Cran raspberry")
flavor <- unique(stringr::str_replace_all(flavors, " ", ""))
min_length = min(nchar(flavor))
done = FALSE

prune <- function(fruits) {
  longest <- which.max(nchar(fruits))
  str <- fruits[longest]
  matched <- FALSE
  while(matched == FALSE && nchar(str) > min_length ) {
    str <- gsub('.{1}$', '', str)
    if(!(str %in% fruits[-longest])) {
      fruits[longest] <- str
    } else {
      matched <- TRUE
    }
  }
  return(fruits)
}

while(!done) {
  new_flavor <- prune(flavor)
  if(identical(new_flavor, flavor)) {
    done <- TRUE
  } else {
    flavor <- new_flavor
  }
}

> flavor
[1] "Applem" "Apple"  "Cherry" "Cranb"  "Cranr" 

不过,我们担心会遇到更多的404,但这些规则未涵盖这些404。因此,如果有人对更好的解决方案有任何想法,请告诉我。