htaccess重定向Angular路由我有幾個路線的角度應用,例如:site.com/site.com/pagesite.com/page/4使用angular的html5路由模式,當您從應用程序中單擊指向它們的鏈接時,這些解析正確,但當您進行硬刷新時,當然會出現404錯誤。為了解決這個問題,我嘗試了一個基本的htaccess重寫。RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_METHOD} !OPTIONSRewriteRule ^(.*)$ index.html [L]這適用于角度請求,但是當我嘗試在我的域中加載腳本或進行ajax調用時,例如:<script src="/app/programs/script.js"></script>這個腳本沒有加載 - 它的請求被重定向,它試圖加載index.html頁面,因為.htaccess認為它應該重新路由請求 - 不知道這個文件確實存在,它應該加載文件而不是重定向。有沒有什么方法可以讓htaccess將請求重定向到index.html(帶有視圖參數),只有當它沒有應解析的實際文件時?
3 回答

喵喵時光機
TA貢獻1846條經驗 獲得超7個贊
使用如下代碼:
RewriteEngine onRewriteCond %{REQUEST_FILENAME} -s [OR]RewriteCond %{REQUEST_FILENAME} -l [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^.*$ - [NC,L]RewriteRule ^(.*) /index.html [NC,L]
如果存在,則跳轉到實際資源,并且index.html
對于所有AngularJS路由,將跳轉到實際資源。

幕布斯7119047
TA貢獻1794條經驗 獲得超8個贊
應用程序請求的directive
模板文件存在問題,但文件丟失。在某些情況下,它導致應用程序請求多個腳本文件index.html
。
如果文件不存在,我們應該發送404
響應而不是index.html
文件。所以我添加簡單的正則表達式模式來識別丟失的文件請求。
RewriteEngine On# If an existing asset or directory is requested go to it as it isRewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -dRewriteRule ^ - [L]# If the requested pattern is file and file doesn't exist, send 404RewriteCond %{REQUEST_URI} ^(\/[a-z_\-\s0-9\.]+)+\.[a-zA-Z]{2,4}$RewriteRule ^ - [L,R=404]# otherwise use history routerRewriteRule ^ /index.html
- 3 回答
- 0 關注
- 655 瀏覽
添加回答
舉報
0/150
提交
取消