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

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

幕布斯7119047
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
應(yīng)用程序請求的directive
模板文件存在問題,但文件丟失。在某些情況下,它導(dǎo)致應(yīng)用程序請求多個(gè)腳本文件index.html
。
如果文件不存在,我們應(yīng)該發(fā)送404
響應(yīng)而不是index.html
文件。所以我添加簡單的正則表達(dá)式模式來識別丟失的文件請求。
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 關(guān)注
- 654 瀏覽
添加回答
舉報(bào)
0/150
提交
取消