2016-07-20 1 views
0

私は角度や私のサーバ(tomcat 7)に関連しているかどうかわかりません。Windows用のTomcat/AngularアプリとLinux用の後ろのスラッシュ

私はこれまでWindowsマシン上のローカルマシン上で開発してきましたが、これまで問題なく問題なく展開して実行できました。 http://localhost:8080/appname

私の角型アプリケーションの$ stateProviderは、URLが http://localhost:8080/appname/#/loginになるようにデフォルト状態を正しく読み込みます。

私はLinuxマシン(同じtomcat7)であるテスト環境にデプロイされました。今度はURL:http://test-box:8080/appname に行くと、次のようになります。http://test-box:8080/appname#/

"appname"の後ろにスラッシュがありません。空のページだけが読み込まれます。私は後者に向かって傾いているが、問題がどこにあるのかわからない。

答えて

0

私はこれが私のテスト環境でどうして起こっているのか分かりませんでしたが、私はその問題を回避することができました。私がやった次

  1. 角度のアプリのための

    有効HTML5モード:私は「真」としてrequireBaseいる

    $locationProvider.html5Mode({ 
        enabled: true, 
        requireBase: true 
    }); 
    

    私は上記のように、Webアプリケーションは、に私をリードappNameのを、持っているので、ポイント2

  2. 、あなたの角度のアプリがあなたのベースのアプリ名で作業できることを確認し、あなたのメインのindex.htmlファイルにこれを追加するには:

    <base href="/appName/"> 
    

    <head>タグの先頭にあることを確認してください

  3. 上記の問題は解決しましたが、新しいものが導入されました。 html5モードのため、あなたのURLに#が表示されなくなります。そして今、ページをリフレッシュすると、URLが角度で完全に管理されるため、サーバーはアクセスしようとしているリソースの処理方法を知らないかもしれません。サーバー側にも存在しない可能性があります。したがって、ページを更新してサーバーが知らないものにアクセスしようとすると(私の場合、appName/apiで始まるもの、appName/resourcなどは大丈夫です)index.htmlにリダイレクトする必要があります。つまり、URLを書き換える必要があります。残念ながら、tomcat7はこれをサポートしていないので、tomcat8にアップグレードする必要がありました。 URLの書き換えは、Apacheフロントエンドサーバーでも構成できます。あなたは、それを行うことができる場合tomcat8にconf/server.xmlでURL書き換えを有効にします。

    RewriteCond %{REQUEST_URI} ^/appName/(api|resource).*$ 
    
    RewriteRule ^.*$ - [L] 
    RewriteRule ^.*$ /appName/index.html [L,QSA] 
    

    これはapi/*またはresource/*で始まるものであることを言う:

    <Host name="localhost" appBase="webapps" 
        unpackWARs="true" autoDeploy="true"> 
    
        <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> 
    

    続いていconf/rewrite.configと呼ばれる新しいファイルを作成します他のものはindex.htmlにリダイレクトする必要があります。

関連する問題