2017-06-12 56 views
5

我遇到一個路徑問題的,當我刷新我的網站標籤:角HTML5Mode - 重寫規則

我複製從GitHub這個重寫規則:

<rule name="Main Rule" stopProcessing="true"> 
      <match url=".*" /> 
      <conditions logicalGrouping="MatchAll"> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
      </conditions> 
      <action type="Rewrite" url="/" /> 
     </rule> 

這是一個路徑,上的偉大工程作爲https://www.mywebsite.com/dashboard

然而,當我刷新像https://www.mywebsite.com/tab/settings我的JavaScript加載路徑罰款,但我的CSS目錄是關閉的1

我的腳本路徑加載正確的,像這樣:

https://www.mywebsite.com/Scripts/angular.js

然而,我的CSS試圖加載爲:

https://www.mywebsite.com/tab/Content/bootstrap.min.css 

與/ tab /導致我的問題。

我的路線:

.state('Template', 
     { 
      url: '', 
      abstract: true, 
      views: { 
       'header': { 
        templateUrl: 'App/SharedViews/Landing/dashboardheader.html' 
       } 
      } 
     }) 
     .state('Template.AdminTab', 
     { 
      url: '/admin', 
      views: { 
       '[email protected]': { 
        templateUrl: 'App/Views/Admin.html' 
       } 
      } 
     }) 
     .state('Template.Tab.Company', 
     { 
      url: '/company', 
      views: { 
       '[email protected]': { 
        templateUrl: 'App/Views/Admin.html' 
       }, 
       '[email protected]': { 
        templateUrl: 'App/Views/Company.html' 
       } 
      } 
     }) 
     .state('Template.Tab.Users', 
     { 
      url: '/users', 
      views: { 
       '[email protected]': { 
        templateUrl: 'App/Views/Admin.html' 
       }, 
       '[email protected]': { 
        templateUrl: 'App/Views/Users.html' 
       } 
      } 
     }) 

如何修改重寫規則的CSS正確加載的是2+段深網址嗎?

+0

看看這個鏈接:https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode –

+0

@Kyle這就是我正在嘗試的URL重寫規則,我相信我已經實現了指南的底部,除了我的url重寫規則之外,我還發布了我的路由。 – RandomUs1r

+3

你可以發佈你如何加載CSS?你可能有'Content/bootstrap.min.css'而不是'/Content/bootstrap.min。css' – maurycy

回答

4

應該有你的路徑爲: /Content/bootstrap.min.css

代替: Content/bootstrap.min.css

把一個「/」前將解決基礎上的根目錄的路徑。

0

我看到了@maurycy的建議,並且達到了一個程度,我同意這一點。但這種解決方案有其自身的侷限性。如果您想在新環境中部署您的應用,例如https://www.mywebsite.com/my_new_app,該怎麼辦?

現在/Content/bootstrap.min.css仍然會指向https://www.mywebsite.com/bootstrap.min.css,這將再次引發此問題。

在我看來,如果你想控制它,你可以使用base tag。它定義了什麼是您的網站的基本URL,並且您的瀏覽器將加載所有相對URL(不以/開頭的那個URL),並以該基址作爲其前綴。在你的HTML的標籤head如下設置:

<base href="/"> 

現在,您的所有資產將被載入相對於這個路徑,不管你目前的瀏覽器的網址是什麼。另外,你可以在這裏指定任何上下文。例如,如果您的應用部署在/my_new_app之下,只需將href更改爲/my_new_app/(不要忘記結尾的斜槓),並且URL將相對於此路徑開始加載。

希望這會有所幫助。

+0

'/ my_new_app /'只是工作啓動路徑不具有端口例如用於本地主機'apache'服務器'xamp'或'WAMP時',這個問題涉及到'IIS'其中有'web.config'所以它應該是'HREF =「/」' – Maher

+0

@Maher - 感謝您的評論,但這種方法沒有考慮任何服務器端處理。 'base'只是一個客戶端標籤,它建議瀏覽器解析相對於指定路徑的URL。 – 31piy

+0

有趣的是,我有<基本href =「/」 />的全部時間,所以我需要在/與基地已經在那裏 – RandomUs1r