I've got a way to avoid the following error, though not a solution. I'll post how I avoided it in a comment.
When installing Backdrop/CiviCRM on Lando, the CiviCRM UI can only be accessed by putting the URL query "?q=" before the "civicrm/admin" (etc.) path. So the following: https://example.com/civicrm/admin
will produce an HTTP 404 error with a white screen. But https://example.com/?q=civicrm/admin
will work, at least partially. In the Lando logs (lando logs -t -f
to see the logs in realtime with timestamps) I see the following error when trying to access it without the "?q=".
Negotiation: discovered file(s) matching request: /app/civicrm (None could be negotiated).
The error is coming from Apache and is because of MultiViews or mod_negotiation settings in Apache (see https://serverfault.com/questions/372733/apache-file-negotiation-failed). I didn't spend much time fiddling with this, but it does look like Lando has MultiViews enabled https://github.com/lando/lando/search?q=multiviews. That is probably not a problem since Drupal 7 and CiviCRM doesn't complain about this. It might be worth figuring out why Apache is having troubles with /app/civicrm but only on Lando. Would require digging into https://httpd.apache.org/docs/current/content-negotiation.html.
At any rate I didn't do that (at least not yet) but do have an easy way of avoid this. More in the comments.
I avoided the HTTP 404 error of Backdrop/CiviCRM on Lando by switching the web server from Apache to nginx (https://docs.lando.dev/config/nginx.html). So in the .lando.yml file it should look like this (this is just a snippet of the whole file):
Save the file and run
lando rebuild -y
to rebuild all the services for the site. It should all work now.