wordpress – 子目录中不同的lighttpd重写规则

我在为特定的子目录(不同于webroot)获取重写规则时遇到了一些问题,我不知道在哪里放置它们.

/ var / www /(包含WordPress的webroot)
/ var / www / subdirectory(包含其他应用程序,需要它自己的重写规则)

以下规则我对于webroot目录中的WordPress(/ var / www或http://mywebsite.com):

$HTTP["host"] =~ "mywebsite.com" {
  url.rewrite-final = (

    # Exclude some directories from rewriting
    "^/(wp-admin|wp-includes|wp-content|gallery2)/(.*)" => "$0",

    # Exclude .php files at root from rewriting
    "^/(.*.php)" => "$0",

    # Handle permalinks and feeds
    "^/(.*)$" => "/index.php/$1"
  )
}

然后我有第二个应用程序,它位于webroot(/ var / www /子目录或http://mywebsite.com/subdirectory)的子目录中,具有以下规则:

url.rewrite = (
    "(index.php|test.php|favicon.ico)" => "/$1",
    "(css|files|img|js)/(.*)" => "/$1/$2",
    "^([^\?]*)(\?(.+))?$" => "/index.php?url=$1&$3",
)

我需要的是上面的第一组重写规则应用于除了上面的#Excluded规则中的其他目录(以及/子目录)之外的所有内容,然后第二组规则仅应用于/子目录

我从网上某个博客得到了WordPress的第一套规则,任何可能都不是我需要的(关于匹配“mywebsite.com”,可能会简化).

我用谷歌搜索了自己尝试了多种变化(大多数只是在随机论坛帖子引导的黑暗中刺伤有点相关),但我无法绕过它.

那么,如何在保留根的Wordpress规则的同时将第二组规则应用于子目录呢?

注意:我无法访问子域(这太简单了).

最佳答案 我不太清楚你想表达什么 – 我将解释你当前的规则集的作用.

不要使用它,用户重写一次

url.rewrite = (

你将index.php和test.php(甚至foo-test.php)映射回webroot

"(index.php|test.php|favicon.ico)" => "/$1",

你重写任何子文件夹或包含css,files,tmp或js的文件在其url回到webroot

"(css|files|img|js)/(.*)" => "/$1/$2",

现在这匹配你的webroot中的任何内容(没有子目录!)并保持获取请求

"^([^\?]*)(\?(.+))?$" => "/index.php?url=$1&$3",
)

更新
这应该做(未经测试)

url.rewrite-once = (
"^/subdir/(?:index.php|test.php|favicon.ico)" => "$0",
"^/subdir/(?:.+/)?(css|files|img|js)/(.*)" => "/subdir/$1/$2", #update #2
"^/subdir/(?:/(?:.+/))?([^\?]*)(?:\?(.+))?$" => "/subdir/index.php?url=$1&$2",

"^/(wp-admin|wp-includes|wp-content|gallery2)/(.*)" => "$0",
"^/(.*.php)" => "$0",
"^/(.*)$" => "/index.php/$1"
)
点赞