Translate nginx rewrite rule for Nextcloud

Below are three ways to implement this rewrite rule
NGINX

 location ~ \.php(?:$|/) {
        # Required for legacy support
        rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|.+\/richdocumentscode(_arm64)?\/proxy) /index.php$request_uri;

CADDY
This is the organized version and easy to read

# required for legacy support
@notlegacy {
                path *.php *.php/
                not path /index*
                not path /remote*
                not path /public*
                not path /cron*
                not path /core/ajax/update*
                not path /status*
                not path /ocs/v1*
                not path /ocs/v2*
                not path /ocs-provider/*
                not path /updater/*
                not path */richdocumentscode/proxy*
        }
        rewrite @notlegacy /index.php{uri}

This is the shortened version of the above

# required for legacy support
@notlegacy {
    path *.php *.php/
    not path /index* /remote* /public* /cron* /core/ajax/update* /status* /ocs/v1* /ocs/v2* /updater* /ocs-provider/* */richdocumentscode/proxy*
}
rewrite @notlegacy /index.php{uri}

This is the path_regexp that is the most similar to the nginx block

# required for legacy support
        @notlegacy {
                path *.php *.php/
                not path_regexp ^/(index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|.+/richdocumentscode(_arm64)?/proxy)
        }
        rewrite @notlegacy /index.php{uri}
2 Likes