When I git pulled my DEV build to my live shared server,

it was placed one directory down from public_html like this:

public_html/mydirectory

So to allow the domain name to load the site directly, I added this to the public_html's .htaccess file:

# Redirect to the web folder. RewriteCond %{REQUEST_URI} !^/mydirectory/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /mydirectory/$1 RewriteRule ^(/)?$ mydirectory/index.php [L]

This allows the site to load,

but to log into Backdrop CMS I still have to use the full path: mydomain.com/mydirectory/user

because this doesn't work: mydomain.com/user

Also, once people navigate to any other pages, the site reverts back to the full path, instead of just loading from top level, so instead of seeing this in address bar: mydomain.com/about

they see this: mydomain.com/mydirectory/about

How do I fix that for user login and page navigating?

Comments

I don't know .htaccess well enough to tell you how to fix it there.  Here is the approach I would take. 

1) Just manually move the backdrop root directory into public_html

or 

2) Add public html to your git repo

Your repo could look like this:

.git .gitignore public_html/index.php public_html/core etc

You could add this directory to your local repo, commit it, and push it to the server. I guess, I'm confused about how you can install Backdrop below the public_html directory. This does not sound like a good idea.

Do you have the git repo in Backdrop root?

I used to always keep .git in Drupal/Backdrop root directory. Now, I include a directory called htdocs, src, or public_html inside the git repo so that git operates a level below Backdrop CMS root.