2016-08-18 57 views
1

概要の「置き換え」:ディレクトリが.htaccessを使用してアクセスされたとき、私は表示するには、ディレクトリ構造内のデフォルトページ(index.htmlを)上で訪問者をリダイレクトしたいTypeError例外:プロパティを読み取ることができません未定義

(現在のディレクトリindex.htmlがロードされています)。

私の角のアプリケーションで$locationProvider.html5Mode(true)をオンにすると、以下のエラーが表示されます。

コンソールエラー:アプリケーションの

enter image description here

ディレクトリ構造:

public_html 
    --prod 
    --public 
     --app 
     --controllers 
     --directives 
     --services 
     --app.config.js 
    --index.html 
    --.htaccess 
.htaccess 

public_htmlの=>.htaccessファイル:

DirectoryIndex prod/public/index.html 

この.htaccessは直接ユーザーがドメインを訪問したときにロードされたindex.html今のように、現在のディレクトリ(public_html)のドメイン名を使用して、アプリケーションページ(prod/public/index.html)に訪問者をリダイレクトするために使用されます。

public_htmlの=>PROD=>の.htaccess:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /prod/public/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*) /prod/public/#/$1 
    RewriteCond %{HTTP_HOST} ^example.com [NC] 
    RewriteRule ^(.*)$ http://www.example.com/prod/$1 [L,R=301] 
</IfModule> 

PROD=>公共=>のindex.html:

<base href="/prod/public/"> 

すべて正常に動作しています$locationProvider.html5Mode(true)を私のapp.config.jsファイルから削除しました。$locationProviderコードをコメントアウトすると、すべて#モードで正常に動作します。 /#/abc等に問題なくご連絡いただけます。私が$locationProvider部品を戻すとすぐに何も起こりません。なしの成功とスタックオーバーフローの

関連問題:public_html => .htaccessインサイド

$locationProvider.html5Mode(true) issues

Angular html5 mode not working in apache

答えて

1

代わりにこのルールを持っている:

:その後、

DirectoryIndex index.html 
RewriteEngine On 

RewriteRule ^/?$ prod/public/index.html [L] 

public_html => prod => .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^public/index.html [L] 
+0

あなたはこれらの行をもっと簡単に説明していただけますか?私は '#'のない 'urls'を望んでいます。 –

+0

私はあなたの表示されたルールの多くを変更しようとしていなかった。私が見つけた主な問題は、 'DirectoryIndex prod/public/index.html'が正しくなく、' DirectoryIndex'がデフォルトのハンドラファイルを設定するだけなので、ドメインリクエストを '/ prod/public/index.html'に書き換えないことです。残念ながら、私はangularjsについてあまり知らないので、私はApache側でのみ助けることができます。私の更新されたルールをテストし、それがあなたの問題を修正するかどうかを確認してください。 – anubhava

+1

期待通りに動作します。ありがとうございます –

関連する問題