Angular роутер и Tomcat 404 - PullRequest
       24

Angular роутер и Tomcat 404

0 голосов
/ 06 января 2020

Я установил приложение angular в папку $ {tomcat_dir} / webapps / ROOT / tomcat9 на Raspberry Pi.

У меня также есть API в java, который установлен в $ { tomcat_dir} / webapps / baby-project-api / папка tomcat.

Связь между ними хорошо работает с RewriteRule.

С другой стороны, если я хочу прийти непосредственно к URL в angular, который возвращает мне 404.

Вот мой файл $ {tomcat_dir} /conf/Catalina/localhost/rewrite.config:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f
RewriteCond %{REQUEST_URI} !^/rest/.*$
RewriteRule ^ - [L]

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !^/rest/.*$
RewriteRule ^/*$ /index.html [L]

RewriteRule ^/rest/(.+)$ /baby-project-api/rest/$1

и сервер . xml:

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
        <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
        <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
        <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
        <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
        <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

        <GlobalNamingResources>
                <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUser$
        </GlobalNamingResources>

        <Service name="Catalina">

                <Connector executor="tomcatThreadPool" port="8080"
                        protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
                <Connector port="8443" maxHttpHeaderSize="8192"
                        maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                        enableLookups="false" disableUploadTimeout="true"
                        protocol="org.apache.coyote.http11.Http11NioProtocol"
                        SSLEnabled="true" sslEnabledProtocols="TLSv1.3,TLSv1.2"
                        ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_12$
                        scheme="https" secure="true" clientAuth="false"
                        sslProtocol="TLS" keyAlias="tomcat"
                        keystoreFile="/opt/tomcat/keys/bb.lhoir.me.jks" keystorePass="${strong_password}"/>
                <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

                <Engine name="Catalina" defaultHost="localhost">

                        <Realm className="org.apache.catalina.realm.LockOutRealm">
                                <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
                        </Realm>

                        <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

                                <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
                                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />

                        </Host>
                </Engine>
        </Service>
</Server>

К вашему сведению, маршруты в angular:

const appRoutes: Routes = [
  { path: 'welcome', component: WelcomeComponent },
  { path: '', component: WelcomeComponent },
  { path: 'cgu', component: CguComponent},
  { path: 'gender', component: FormGenderComponent},
  { path: 'gender/:choice', component: FormGenderComponent},
  { path: 'auth', component: AuthComponent},
  { path: 'parents/dbgender', component: DBGenderComponent},
  { path: 'not-found', component: FourOhFourComponent },
  { path: '**', redirectTo: 'not-found' }
];

Я посмотрел много похожих предметов, но невозможно go, например, на https://url.com/cgu без перехода по ссылке на моих страницах.

...