Index.php/login redirect 404 not found

After installing everything and filling in the admin + database info’s I get redirected to nextcloud/index.php/login

Of course, that page does not exist.
I have tried older versions too. One of which redirects to something similar. And one version wants to update, but the update does not work in any browser.

What to do?

Check the logs files of your browser and probably post them here. I suggest you also post your webserver config (with the server parts), so we can see if there are misconfigurations somewhere.

How to get my browsers logs?

Chrome

  • Press either CTRL + SHIFT + J to open the “console” tab of the Developer Tools.
  • Alternative method:
    • Press either CTRL + SHIFT + I or F12 to open the Developer Tools.
    • Click the “console” tab.

Safari

  • Press CTRL + ALT + I to open the Web Inspector.
  • See Chrome’s step 2. (Chrome and Safari have pretty much identical dev tools.)

IE9

  • Press F12 to open the developer tools.
  • Click the “console” tab.

Firefox

  • Press CTRL + SHIFT + K to open the Web console (COMMAND + SHIFT + K on Macs).
  • or, if Firebug is installed (recommended):
    • Press F12 to open Firebug.
    • Click on the “console” tab.

Opera

  • Press CTRL + SHIFT + I to open Dragonfly.
  • Click on the “console” tab.

In both chrome and firefox the console is as good as empty when loading the site.
However, this is my server configuration. I use nginx:

server {
listen 80;
listen [::]:80;

root /var/www/html;

index index.html index.php;

server_name example.com www.example.com;

# log files
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;

location = /favicon.ico {
    log_not_found off;
    access_log off;
}

location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
}

location / {
    try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
    expires max;
    log_not_found off;
}

}

I changed my domain (which does not load my site, while my ip does show my site (have contacted the domain provider about this) to example.com. So just ignore that.

This is a basic configuration, without SSL yet. But this should be enough, no?

BTW wordpress works fine

Your config doesn’t seem to be correct.
Could you have a look at the guide and adapt your config accordingly (just ignore the HTTPS related settings):
https://docs.nextcloud.com/server/14/admin_manual/installation/nginx.html

With

upstream php-handler {
    server 127.0.0.1:9000;
    #server unix:/var/run/php/php7.0-fpm.sock;
}

server {
    listen 80;
    listen [::]:80;
    server_name cloud.example.com;
    # enforce https
#    return 301 https://$server_name$request_uri;
}

#server {
#   listen 443 ssl http2;
#    listen [::]:443 ssl http2;
#    server_name cloud.example.com;

    # Use Mozilla's guidelines for SSL/TLS settings
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/
    # NOTE: some settings below might be redundant
#    ssl_certificate /etc/ssl/nginx/cloud.example.com.crt;
 #   ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key;

    # Add headers to serve security related headers
    # Before enabling Strict-Transport-Security headers please read into this
    # topic first.
    #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header Referrer-Policy no-referrer;

    # Remove X-Powered-By, which is an information leak
    fastcgi_hide_header X-Powered-By;

    # Path to the root of your installation
    root /var/www/html;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    # rewrite ^/.well-known/host-meta /nextcloud/public.php?service=host-meta
    # last;
    #rewrite ^/.well-known/host-meta.json
    # /nextcloud/public.php?service=host-meta-json last;

#    location = /.well-known/carddav {
      return 301 $scheme://$host/nextcloud/remote.php/dav;
 #   }
#    location = /.well-known/caldav {
      return 301 $scheme://$host/nextcloud/remote.php/dav;
#    }

#    location /.well-known/acme-challenge { }

    location ^~ /nextcloud {

        # set max upload size
        client_max_body_size 512M;
        fastcgi_buffers 64 4K;

        # Enable gzip but do not remove ETag headers
        gzip on;
        gzip_vary on;
        gzip_comp_level 4;
        gzip_min_length 256;
        gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
        gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

        # Uncomment if your server is build with the ngx_pagespeed module
        # This module is currently not supported.
        #pagespeed off;

        location /nextcloud {
            rewrite /nextcloud/index.php$request_uri;
        }

        location /nextcloud/(?:build|tests|config|lib|3rdparty|templates|data)/ {
            deny all;
        }
        location /nextcloud/(?:\.|autotest|occ|issue|indie|db_|console) {
            deny all;
        }

        location /nextcloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
            fastcgi_split_path_info ^(.+?\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param HTTPS on;
            #Avoid sending the security headers twice
            fastcgi_param modHeadersAvailable true;
            fastcgi_param front_controller_active true;
            fastcgi_pass php-handler;
            fastcgi_intercept_errors on;
            fastcgi_request_buffering off;
        }

        location /nextcloud/(?:updater|ocs-provider)(?:$|/) {
            try_files $uri/ =404;
            index index.php;
        }

        # Adding the cache control header for js and css files
        # Make sure it is BELOW the PHP block
        location ~ \.(?:css|js|woff2?|svg|gif)$ {
            try_files $uri /nextcloud/index.php$request_uri;
            add_header Cache-Control "public, max-age=15778463";
            # Add headers to serve security related headers  (It is intended
            # to have those duplicated to the ones above)
            # Before enabling Strict-Transport-Security headers please read
            # into this topic first.
            # add_header Strict-Transport-Security "max-age=15768000;
            # includeSubDomains; preload;";
            add_header X-Content-Type-Options nosniff;
            add_header X-XSS-Protection "1; mode=block";
            add_header X-Robots-Tag none;
            add_header X-Download-Options noopen;
            add_header X-Permitted-Cross-Domain-Policies none;
            add_header Referrer-Policy no-referrer;

            # Optional: Don't log access to assets
            access_log off;
        }

        location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
            try_files $uri /nextcloud/index.php$request_uri;
            # Optional: Don't log access to other assets
            access_log off;
        }
    }
}

I get: – Unit nginx.service has begun starting up.

dec 11 15:26:42 server1 nginx[3442]: nginx: [emerg] “location” directive is not allowed here in /etc/nginx/sites-enabled/monkeycloud.tk:42
dec 11 15:26:42 server1 nginx[3442]: nginx: configuration file /etc/nginx/nginx.conf test failed
dec 11 15:26:42 server1 systemd[1]: nginx.service: Control process exited, code=exited status=1
dec 11 15:26:42 server1 systemd[1]: nginx.service: Failed with result ‘exit-code’.
dec 11 15:26:42 server1 systemd[1]: Failed to start A high performance web server and a reverse proxy server.
– Subject: Unit nginx.service has failed

Uncomment “#server {”

I did, and now:
nginx: [emerg] invalid number of arguments in “rewrite” directive in /etc/nginx/sites-enabled/monkeycloud.tk:83

Due to commenting you defined the “location” outside of the server part.
Please try to change the config by commenting out the } bracket:

erver {
    listen 80;
    listen [::]:80;
    server_name cloud.example.com;
    # enforce https
#    return 301 https://$server_name$request_uri;
#}                                            <<< COMMENT HERE

#server {
#   listen 443 ssl http2;
#    listen [::]:443 ssl http2;
#    server_name cloud.example.com;

Not sure if the header settings work with HTTP, but you can try that first.

Nginx starts after a reboot. Even without commenting it out.

But now I get a 403 forbidden site…

Sigh, now I changed the directory to something before nextcloud, with only a index.html file with test written in it. And I get a Welcome to nginx message. Of which the file is not in that specified folder :frowning:

I’d say this indicates, that the root web folder is somewhere else then.

Your web server is not setup correctly. Could you maybe check all your nginx config files? Also the configurations of your sites under /etc/nginx/site-enabled

If you are unsure, copy your latest configs here and we can have a look.