我在为特定的子目录(不同于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"
)