2016-04-04 24 views
3

Sadece Vue yönlendirici geçmiş modunu etkinleştirdim. Ve v-href veya href ile vue yönlendirme ziyaret ettiğinizde iyi çalışır. Ancak, bu sayfayı yenilemeye veya tarayıcı adres çubuğundan doğrudan çalışmaya başladığımda, yalnızca 404 değerini döndürür. Bu URL'ye yenile/yeniden katılmayı kabul etmek için herhangi bir seçenek var mı? Vue Router, 401 dönüşüne geri döndüğünde, url'ye geri dönülür

aşağıdaki

geçerli url ve sunucu ile sunucuya bir istek yapıyoruz sayfayı yenileyerek By benim Vue yönlendirici yapılandırması

var router = new VueRouter({ 
    hashbang: false, 
    history: true, 
    mode: 'html5', 
    linkActiveClass: "active", 
    root: '/user' 
}); 

cevap

9

olduğunu Kendi web framework bu işlemek zorunda veya 404. döndürür web sunucusu seviyesi.

https://router.vuejs.org/en/essentials/history-mode.html

+0

Haklısınız. Web çerçevem ​​veya web sunucu seviyemle başa çıkmak zorundayım. Bunu kontrol etmeye çalışacağım. Teşekkürler –

2

Sana SPA sunucu tarafında oluşturma olmadığını eksik olduğunu düşünüyorum. En azından çoğunluk için. Yani, herhangi bir şeye eriştiğinizde, web sunucunuz index.html'ye yönlendirmez. Ancak, herhangi bir vuejs yönlendirici bağlantısına tıklarsanız, javascript'in harekete geçtiği, ancak sunucu tarafında olmadığı için çalışacaktır. Bunu çözmek için

yüzden

<ifModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^index\.html$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.html [L] 
</ifModule> 

Birini yardımcı Umut gibi index.html için .htaccess kullanmak ve tüm istekleri yönlendirme!

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
     ....Your configuration 
     app.UseMvc(routes => 
     { 
     routes.MapRoute(
        name: "default", 
        template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 
     //handle client side routes 
     app.Run(async (context) => 
     { 
     context.Response.ContentType = "text/html"; 
     await context.Response.SendFileAsync(Path.Combine(env.WebRootPath, "index.html")); 
     }); 
    } 
} 

için:

İlgili konular