A git commit is an immutable snapshot of a version of the entire project. Each file's path within that snapshot is the same for every repo that holds the commit. You could try to get around this by using some crazy scheme that rewrites the history as the push is being completed, but if you could make it work at all the result would still be a remote that's constantly out of sync with the local (i.e. you'd be unable to push or pull cleanly).
There are two options, depending on what you're trying to accomplish.
If the remote contains multiple projects that you want shared together, but you want to modify each project individually, then probably the closest thing you can do is make a separate remote that looks just like your local, and then push to it, and set it up as a submodule or subtree of the "broader" repository.
If you're trying to use git as a deployment tool and the files just aren't appearing in the right working path, then you should either
(a) switch the remote to be a BARE repo, and use hooks to perform a chedkout
operation in which you specify the git work tree directory, OR
(b) move the root of the repo work tree so that it is where you want it to be on the server, OR
(c) [my recommendation] use a proper deployment tool instead of making push do something it wasn't really designed for