12

概要 :

使用するAngularJSアプリケーションが$locationProvider.html5Mode(true)あり、Apacheサーバーから提供されます。これまでは、ソース コードを他のコードからアクセスできるように使用しており、angularJS の HTML5 モード用に index.html へのリダイレクトが必要でした。だから私は自分のフォルダの.htaccessファイルにこれを持っていました。/app

.htaccess :

<IfModule mod_rewrite.c>

    RewriteEngine on

    # Don't rewrite files or directories
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]

    # Rewrite everything else to index.html to allow html5 state links
    RewriteRule ^ index.html [L]

</IfModule>

変更:

次に、アプリのフォルダーに生成されるソリューション全体を縮小するために Grunt を追加しました/dist(したがって、縮小されたソリューションは /app/dist にあります)。ユーザーにリンクを変更させずに、アプリのトラフィック全体を縮小版にルーティングしたいと思います。したがって、実際には、すべての呼び出しを /app から /app/dist にリダイレクトしたいと考えています。

現在のディレクトリ構造:

app
    dist
        minified versions(css,html,js)

/app の .htaccess でここからいくつかの条件を使用しようとし、他の .htaccess ファイルを /app/dist に移動しましたが、成功しませんでした。この2つをこのように組み合わせることができるかどうかさえわかりません。代わりに dist フォルダーを /app として使用できることはわかっていますが、/app はリポジトリであり、更新を維持する方が簡単であるため、これはあまり必要ありません。では、リダイレクトでこれを達成するにはどうすればよいでしょうか?

また、2 つ目として、デバッグを改善するためにアルファ ユーザーが通常の (縮小されていない) バージョンを使用できるように、フラグを設定することはできますか?

アップデート:

このためのサンプル プロジェクトをここに追加しました。上に示した最初の .htaccess ファイルを保存しただけで、両方のバージョン (/test/test/dist) が上記のように機能することを確認できます。また、おそらく未使用のコードと依存関係がいくつかありますが、プロジェクトから他の部分を切り取っただけです(判断しないでください:D)。

このために、AngularJS 1.4.8 で初期構成を使用しました。これは、ここここに記載されているようなエラーを生成する可能性があります。AngularJS のバージョンを 1.5.8 (Angular 1 の最後の安定版リリース) に自由に更新してください。ただし、 Cosmin Ababai の投稿へのコメントも考慮してください。また、プロジェクトは、grunt (および grunt のその他の拡張機能) のインストールに npm を使用し、angular およびその他の基本コンポーネントの場合は bower を使用し、縮小版のビルドには grunt を使用します (実際には、今のところ同じファイル内のリソースを連結しているだけです)。依存関係を変更する必要がある場合は、実行することを忘れないでくださいbower install。dist フォルダーを再生成する場合は、実行することを忘れないでnpm installくださいgrunt build

4

2 に答える 2

1

/distディレクトリ内index.htmlに、縮小されたリソースと正しい<base>タグを指す更新された URL があると仮定します。タグはフォルダーを指している必要があることに注意してください。<base>/dist非圧縮/distに使用している値に追加するだけで問題ありません。 index.html

これらを整理すると、更新された.htaccessファイルが次のようになります。

RewriteEngine On

# Don't rewrite files
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

# If the ALPHA_USER cookie is set, serve the uncompressed files
RewriteCond %{HTTP_COOKIE} ALPHA_USER [NC]
RewriteRule ^ index.html [L]

# Rewrite everything
RewriteRule ^ dist/index.html [L]

次の 2 つのことがわかります。

  • RewriteCond %{REQUEST_FILENAME} -dディレクトリ全体を提供する必要はない可能性が高いため、削除しました

  • ALPHA_USERユーザーを非圧縮ファイルにリダイレクトする Cookie を追加しました。この Cookie は、任意の値を持つことができます。

于 2016-08-30T04:01:25.263 に答える
0

public_html =>/app =>.htaccess 内でこれを試してください:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ dist/index.html [L]

注 : HTML<base>タグは dist フォルダーを指す必要があります。このソリューションがあなたの期待どおりに機能することを願っています。

于 2016-08-31T13:14:00.947 に答える