2013-07-25 17 views
4

當我從索引來訪問我的網頁,並開始瀏覽一切正常,但是當我比/例如在/details/123其他的路線上,我刷新頁面(我有網址重寫配置)路線設置不正確。
這意味着,當我檢查從索引正常瀏​​覽時的位置路徑,我在/details/123位置路徑爲/details/123如預期的,但當我刷新頁面,我仍然在/details/123位置路徑更改爲/123導致ngView顯示錯誤的視圖。
我使用HTML5模式和角v.1.1.5當瀏覽器刷新爲基本路徑,ngView打破

UPDATE:我創建了一個簡單的例子here來說明這個問題。
我沒有任何特別的設置,我不認爲是服務器問題。我有一個不同的應用程序在Python中的重定向是在應用程序內完成相同的問題。
.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)  /index.php 
</IfModule> 
+0

如果設置沒有基本href和應用程序的真正基礎是「/」我覺得1.1.5會的工作。也許你有你的服務器上的每個改寫爲基本href設置爲當前頁面? – lossleader

回答

8

這可能與一個不愉快的問題,即角1.1.5中露面,是在覈心庫中的錯誤。一個爲許多人工作的解決方案是將以下標記添加到您的index.html頭部。

如果您的應用程序在你的域的根目錄運行。

<head> 
    ... 
    <base href="/"></base> 
    ... 
</head> 

或者,如果您的應用程序在一個子目錄下,指定子目錄(如「MYAPP」):

<head> 
    ... 
    <base href="/myapp/"></base> 
    ... 
</head> 

此外,您也可以嘗試一套新的重寫規則。此配置適用於許多ui路由器用戶。

<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> 
+0

聽起來我的權利,從演示它顯然默認爲當前路徑,它看起來就像是經過1.1.5固定:https://github.com/angular/angular.js/commit/aef098006302689d2d75673be828e31903ee7c3c – lossleader

+0

謝謝,我現在就用這個​​。一個問題是,這打破了錨鏈接。 – olanod

+0

我怎麼能解決這個問題,如果我也有相同的名稱的鏈接文件夾? Apache的進入子目錄而不是重定向到index.html的。 – Tal