Comprender lo que se necesita para eliminar el hash # de las rutas angulares

Antes de eliminar el signo hash, tuve

mainApp.config(function ($locationProvider, $routeProvider) {
    $routeProvider
    .when('/page', {
        controller: 'Page',
        templateUrl: 'templates/page.html'
    })
    .when('/main', {
        controller: 'Main',
        templateUrl: 'templates/main.html'
    })
    .otherwise({ redirectTo: '/main'});

    //$locationProvider.html5Mode(true);
});

y estos funcionaron bien

http://localhost:8080/index.html#/main
http://localhost:8080/index.html#/page

Después de eliminar el signo de libra, agregué a index.html

<base href="/">
<script src="/vendor/bootstrap-dist/js/bootstrap.min.js"></script>
<script src="/vendor/javascript/angular/angular.js"></script>
<script src="/vendor/javascript/angular/angular-route.js"></script>
<script src="/vendor/javascript/angular/ui-bootstrap-tpls-0.11.2.min.js"></script>
<script src="/javascript/index.js"></script>
<script src="/javascript/controllers/main.js"></script>
<script src="/javascript/controllers/page.js"></script>

y a index.js

$locationProvider.html5Mode(true);

ahora golpeandohttp://localhost:8080 redirige ahttp://localhost:8080/main

pero yendo ahttp://localhost:8080/main directamente en el navegador devuelve 404 y las otras páginas también

¿Qué debo hacer para solucionar el problema?

mi backend es java

Respuestas a la pregunta(1)

Su respuesta a la pregunta