在不损坏管理界面或 JSON API 的情况下,在 WordPress Multisite 中添加尾部斜杠

Add trailing slashes in WordPress Multisite without damaging the admin interface or the JSON API

对于 WordPress 多站点安装,我的 .htaccess 有以下部分:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)([^./])$ %{REQUEST_URI}/ [L,R=301,NE]

在单个 WordPress 安装中,/wp-admin 和 /wp-json 始终直接跟在域之后,我可以使用以下命令将它们从尾部斜线规则中排除:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/wp-admin
RewriteCond %{REQUEST_URI} !^/wp-json
RewriteRule ^ / [R=301,L]

在 WordPress 多站点中,管理界面和 JSON API 可以这样访问:

www.example.com/wp-admin
www.example.com/wp-admin/whatever
www.example.com/site1/wp-admin
www.example.com/site2/wp-admin/whatever?whatever

www.example.com/wp-json
www.example.com/wp-json/whatever
www.example.com/site1/wp-json
www.example.com/site2/wp-json/plugin-7/12/request

等等...

将它们放在一起的正确 .htaccess 规则是什么?尝试过某些事情但没有成功。不一定是 WordPress 特定问题。

没关系我终于想通了:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/wp-json
RewriteCond %{REQUEST_URI} !^/wp-admin
RewriteCond %{REQUEST_URI} !^/([_0-9a-zA-Z-]+)/wp-json
RewriteCond %{REQUEST_URI} !^/([_0-9a-zA-Z-]+)/wp-admin
RewriteRule ^([^.]+)([^./])$ %{REQUEST_URI}/ [L,R=301,NE]