2014-12-30 44 views
7

Tôi đang sử dụng ứng dụng web AngularJS 1.3 với API REST Java/Jersey. Cuối cùng tôi đã html5mode làm việc với Tuckey UrlRewriteFilter để một cái gì đó đơn giản như localhost: 8080/#/trang tại là chỉ localhost: 8080/trang. Nhưng, dường như tôi không thể làm được điều phức tạp hơn như localhost: 8080/mypage/category/subcategory/item hoạt động bình thường. Url này sẽ được tải trong html5mode khi trong một tab trình duyệt duy nhất, nhưng nếu tôi mở liên kết trong một tab mới tôi nhận được một 404.Không thể nhận mã html5mode góc và UrlRewriteFilter làm việc với một số URL nhất định

Dưới đây là pom và web.xml của tôi file:

pom.xml

<filter> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> 
    <init-param> 
     <param-name>confPath</param-name> 
     <param-value>/WEB-INF/urlrewrite.xml</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 

web.xml:

<urlrewrite> 
    <rule match-type="wildcard"> 
     <from>*/page</from> 
     <to>index.html</to> 
    </rule> 

    // what should this rule look like in order to recognize a url like: 
    // localhost:8080/mypage/category/subcategory/item 
    <rule match-type="wildcard"> 
     <from>?</from> 
     <to>index.html</to> 
    </rule> 
</urlrewrite> 

tôi đọc qua UrlRewriteFilter documenta tion here và đã thử sử dụng các biến thể khác nhau của cú pháp đối sánh và ký tự đại diện, nhưng tôi luôn nhận được 404.

Tôi cũng sẽ thêm rằng tôi đang sử dụng phiên bản angular-ui-router 0.2.13 và url của tôi cho trang/trạng thái được đề cập trông giống như /mypage /: category /: subcategory /: item. Vì vậy, câu hỏi của tôi là làm thế nào tôi có thể phù hợp với mô hình này để chuyển hướng đến index.html hoạt động chính xác cho html5mode hoặc tôi nên cấu hình định tuyến khác nhau để làm việc tốt hơn với UrlRewriteFilter không? Không.

Trả lời

0

Đây là những gì tôi đã kết thúc bằng

<urlrewrite> 
<rule match-type="regex" enabled="true"> 
    <condition type="request-filename" operator="notfile" /> 
    <condition type="request-filename" operator="notdir" /> 
    <condition type="request-uri" operator="notequal">(\.html|\.js)</condition> 
    <from>^/html/(.*rootpage1.*|.*rootpage2.*)$</from> 
    <to last="true">/html/index.html</to> 
</rule> 

Như ứng dụng của tôi đang sử dụng <base href="/myapp/html/">

Tôi cũng đã phải thay đổi các tài liệu tham khảo trên index.html của tôi từ liên quan đến href="/myapp/html/otherpage.html" vì ví dụ . khi sử dụng các tham chiếu tương đối trên/myapp/html/rootpage1/page1/something và ghi đè chuyển url tới index.html nó nằm trên rootpage1/scope sau đó thay vì html/scope.

Các vấn đề liên quan