First RC of Nextcloud 27.1.2

do you have rewrite enable ? do you allow Rewrite Rules in .htaccess ? is the .htaccess loaded/accepted by apache ? can you past the line you have in .htaccess related to ocm-provider ?

is there still a folder ‘ocm-provider’ in your nextcloud setup ?

Here is the .htaccess on the root:

<IfModule mod_rewrite.c>
RewriteEngine on
  RewriteRule ^\.well-known/carddav /nextcloud/remote.php/dav [R=301,L]
  RewriteRule ^\.well-known/caldav /nextcloud/remote.php/dav [R=301,L]
  RewriteRule ^\.well-known/webfinger /nextcloud/index.php/.well-known/webfinger [R=301,L]
  RewriteRule ^\.well-known/nodeinfo /nextcloud/index.php/.well-known/nodeinfo [R=301,L]
  RewriteRule ^ocm-provider/?$ /nextcloud/index.php [QSA,L]
</IfModule>

The other rules are working, because if I remove them I get some warnings from nextcloud.
The ocm-provider folder is no longer existing.

can you send me (maxence@nextcloud.com) the address of your nextcloud so I can run a curl request myself ?

My .htaccess is not at the top root of my domain.
Yes, your solution works too.
Both types:
RewriteRule ^\.ocm-provider/?$ /index.php [QSA,L] as well
RewriteRule ^ocm-provider/?$ /nextcloudfolder/index.php [QSA,L].
But the question is which variant makes more sense or what effect
the first variant with “\.” at the beginning?
Thank you

Same problem here. nextCloud is installed in a subfolder, ocm-provider rewrite rule is in site config. If I comment ocm-provider line in subfolder .htaccess, the warning disappears, but then of course core integrity check fails for .htaccess. Any suggestions?

I have the same problem. Nextcloud is installed in a subdirectory. The rewrite rules mentioned in this thread did not solve the problem.

Same problem, same fix. The problem disappeared immediately. But I am a noob and I don’t know what this does. Is it a “stable solution”, doesn’t it break something in the future?
Thanks everybody! :slightly_smiling_face:

1 Like

Same here - for me it doesnt solve the problem too

So I got rid of the warning by modifying .htaccess and changing the line to

RewriteRule ^.ocm-provider/?$ /index.php [QSA,L]

Initially I tried putting this in my Apache config for my Nextcloud setup but for some reason any rewrite rules I put in there seem to have no affect.

This may work for you when you have nextcloud in a subdirectory. I use nextcloud in a subdomain like cloud.mydomain.de and when I put your change into my .htaccess the warning pops up again. It was gone with the former solution.

I updated my nextcloud instance to 27.1.2 today and also got this message. I’m running nextcloud with nginx and my nginx config doesn’t contain any “ocm-provider”. My .htacces file looks like KittyMeow stated.

My solution:
RewriteRule ^ocm-provider/?$ /index.php [QSA,L] changed to
RewriteRule ^ocm-provider/?$ /nextcloud/index.php [QSA,L]

My instance placed in a subfolder (https://example.com/nextcloud/)

Ok, seems like this is tracked as a bug: https://github.com/nextcloud/server/issues/40803
I will wait for a solution…

Nginx does not make use of .htaccess files, so you have to edit it by hand anyway. If you have chosen for nginx as webserver, you should read the manual if anything had changed after each update and change it yourself…

→ Old config (highlight=oc[ms]-provider) ←
→ New config (highlight=ocs-provider) ←

In detail:
Search for this re-string:
oc[ms]-provider
in your nginx configfile and replace it by this string:
ocs-provider

reload or restart nginx

That should do it for you (and nginx users in general)

much luck!

Nope, I found and replaced the “oc[ms]-provider” with “ocs-provider”, restarted nginx, but the message still appears.

Seems like I had some other issues in my nginx config. I replaced some sections from the new sample and now the message is gone. Thanks for the links @ernolf

1 Like

That wasn’t fixing my problem at all.
So currently my webserver is behind an nginx proxy manager, who redirect to my proxmox-container.
This one works with apache and “only” http (Port 80). SSL is done by NPM, so no worry.

If I try all the fixes here, nothing works. Fact is, that going to wolke.mydomain.net/index.php/ocm-provider give me the needed result. But RewriteRules for wolke.mydomain.net/ocm-provider still not work. As you see, I use a subdomain for my cloud, what worked fine with 27.1.1 so far :frowning: My current .htaccess as code.

<IfModule mod_headers.c>
  <IfModule mod_setenvif.c>
    <IfModule mod_fcgid.c>
       SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
       RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION
    </IfModule>
    <IfModule mod_proxy_fcgi.c>
       SetEnvIfNoCase Authorization "(.+)" HTTP_AUTHORIZATION=$1
    </IfModule>
    <IfModule mod_lsapi.c>
      SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
      RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION
    </IfModule>
  </IfModule>

  <IfModule mod_env.c>
    # Add security and privacy related headers

    # Avoid doubled headers by unsetting headers in "onsuccess" table,
    # then add headers to "always" table: https://github.com/nextcloud/server/pull/19002
    Header onsuccess unset Referrer-Policy
    Header always set Referrer-Policy "no-referrer"

    Header onsuccess unset X-Content-Type-Options
    Header always set X-Content-Type-Options "nosniff"

    Header onsuccess unset X-Frame-Options
    Header always set X-Frame-Options "SAMEORIGIN"

    Header onsuccess unset X-Permitted-Cross-Domain-Policies
    Header always set X-Permitted-Cross-Domain-Policies "none"

    Header onsuccess unset X-Robots-Tag
    Header always set X-Robots-Tag "noindex, nofollow"

    Header onsuccess unset X-XSS-Protection
    Header always set X-XSS-Protection "1; mode=block"

    SetEnv modHeadersAvailable true
  </IfModule>

  # Add cache control for static resources
  <FilesMatch "\.(css|js|mjs|svg|gif|png|jpg|ico|wasm|tflite)$">
    <If "%{QUERY_STRING} =~ /(^|&)v=/">
      Header set Cache-Control "max-age=15778463, immutable"
    </If>
    <Else>
      Header set Cache-Control "max-age=15778463"
    </Else>
  </FilesMatch>

  # Let browsers cache WOFF files for a week
  <FilesMatch "\.woff2?$">
    Header set Cache-Control "max-age=604800"
  </FilesMatch>
</IfModule>

<IfModule mod_php.c>
  php_value mbstring.func_overload 0
  php_value default_charset 'UTF-8'
  php_value output_buffering 0
  <IfModule mod_env.c>
    SetEnv htaccessWorking true
  </IfModule>
</IfModule>

<IfModule mod_mime.c>
  AddType image/svg+xml svg svgz
  AddType application/wasm wasm
  AddEncoding gzip svgz
  # Serve ESM javascript files (.mjs) with correct mime type
  AddType text/javascript js mjs
</IfModule>

<IfModule mod_dir.c>
  DirectoryIndex index.php index.html
</IfModule>

<IfModule pagespeed_module>
  ModPagespeed Off
</IfModule>

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_USER_AGENT} DavClnt
  RewriteRule ^$ /remote.php/webdav/ [L,R=302]
  RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  RewriteRule ^\.well-known/carddav /remote.php/dav/ [R=301,L]
  RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L]
  RewriteRule ^remote/(.*) remote.php [QSA,L]
  RewriteRule ^(?:build|tests|config|lib|3rdparty|templates)/.* - [R=404,L]
  RewriteRule ^\.well-known/(?!acme-challenge|pki-validation) /index.php [QSA,L]
  RewriteRule ^ocm-provider/?$ /index.php [QSA,L]
  RewriteRule ^(?:\.(?!well-known)|autotest|occ|issue|indie|db_|console).* - [R=404,L]
</IfModule>

AddDefaultCharset utf-8
Options -Indexes
#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####

ErrorDocument 403 /index.php/error/403
ErrorDocument 404 /index.php/error/404
<IfModule mod_rewrite.c>
  Options -MultiViews
  RewriteRule ^core/js/oc.js$ index.php [PT,E=PATH_INFO:$1]
  RewriteRule ^core/preview.png$ index.php [PT,E=PATH_INFO:$1]
  RewriteCond %{REQUEST_FILENAME} !\.(css|js|mjs|svg|gif|png|html|ttf|woff2?|ico|jpg|jpeg|map|webm|mp4|mp3|ogg|wav|wasm|tflite)$
  RewriteCond %{REQUEST_FILENAME} !/core/ajax/update\.php
  RewriteCond %{REQUEST_FILENAME} !/core/img/(favicon\.ico|manifest\.json)$
  RewriteCond %{REQUEST_FILENAME} !/(cron|public|remote|status)\.php
  RewriteCond %{REQUEST_FILENAME} !/ocs/v(1|2)\.php
  RewriteCond %{REQUEST_FILENAME} !/robots\.txt
  RewriteCond %{REQUEST_FILENAME} !/(ocs-provider|updater)/
  RewriteCond %{REQUEST_URI} !^/\.well-known/(acme-challenge|pki-validation)/.*
  RewriteCond %{REQUEST_FILENAME} !/richdocumentscode(_arm64)?/proxy.php$
  RewriteRule . index.php [PT,E=PATH_INFO:$1]
  RewriteBase /
  <IfModule mod_env.c>
    SetEnv front_controller_active true
    <IfModule mod_dir.c>
      DirectorySlash off
    </IfModule>
  </IfModule>
</IfModule>

My cloud is not working in a subdir for apache, cause the default-folder is /var/www/nextcloud as root-folder. So where is the missing point for me?

Look into your apache config for this entry:
<Directory /var/www/nextcloud>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted

and change it from none to All that works for me.

1 Like

Nothing fixed my problem.

My nextcloud is hosted under: nextcloud.mydomain.de
My .htaccess:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_USER_AGENT} DavClnt
  RewriteRule ^$ /remote.php/webdav/ [L,R=302]
  RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  RewriteRule ^\.well-known/carddav /remote.php/dav/ [R=301,L]
  RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L]
  RewriteRule ^remote/(.*) remote.php [QSA,L]
  RewriteRule ^(?:build|tests|config|lib|3rdparty|templates)/.* - [R=404,L]
  RewriteRule ^\.well-known/(?!acme-challenge|pki-validation) /index.php [QSA,L]
  RewriteRule ^ocm-provider/?$ /index.php [QSA,L]
  RewriteRule ^(?:\.(?!well-known)|autotest|occ|issue|indie|db_|console).* - [R=404,L]
</IfModule>

My apache config:

<VirtualHost *:80>
        ServerName nextcloud.mydomain.de
        Redirect / https://nextcloud.mydomain.de
        ServerAdmin 
        DocumentRoot /var/www/nextcloud/
        ErrorLog ${APACHE_LOG_DIR}/hostname.tld_error.log
        CustomLog ${APACHE_LOG_DIR}/hostname.tld_access.log combined

        <Directory /var/www/nextcloud/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Require all granted

            <IfModule mod_dav.c>
                Dav off
            </IfModule>

            SetEnv HOME /var/www/nextcloud
            SetEnv HTTP_HOME /var/www/nextcloud
        </Directory>
    </VirtualHost>

If I call “https://nextcloud.mydomain.de/index.php/ocm-provider/” I get a result/JSON FIle

Content from Setup.php:

$content .= "\n RewriteCond %{REQUEST_FILENAME} !/(ocs-provider|updater)/";

Hat nun endlich auch bei mir geklappt, danke!