दिलचस्प पोस्ट
एक SQL सर्वर VARCHAR / NVARCHAR स्ट्रिंग में एक लाइन ब्रेक कैसे सम्मिलित करें सी # में नियमित अभिव्यक्ति समूह एकाधिक क्लाइंट सर्वर पर समवर्ती रूप से उपयोग करते हैं एएससीआईआई कला के साथ ग्रिड टेम्पलेट-क्षेत्र काम नहीं कर रहे हैं हेज़वेल पर केवल 3 चक्र क्यों लेता है, एग्नेर के निर्देश तालिकाओं से अलग है? अंदर छवि के साथ html / css षट्भुज क्या इंटरनेट एक्सप्लोरर 8 एचटीएमएल 5 का समर्थन करता है? किसी वस्तु के लिए अधिकतम मूल्य वाले ऑब्जेक्ट को मैं कैसे लौटा सकता हूं? कोणीय जेएस और गूगल एपीआई client.js (गैपसी) क्या सभी फॉर्मों को अवरुद्ध किए बिना शोडीियलोग का उपयोग करना संभव है? AngularJS एक पृष्ठ के भीतर एकाधिक एनजी-ऐप संख्या और सीमाओं के साथ लूप के लिए AngularJS AngularJS: एनजी मॉडल बाध्यकारी अद्यतन नहीं है जब jQuery के साथ बदल दिया स्विफ्ट ऐप में स्थानीय डेटा को कैसे सहेजना है? सी से चतुर्थ रूपांतरण सी में

कोणीय 2: 404 त्रुटि तब होती है जब मैं ब्राउज़र के माध्यम से ताज़ा करता हूं

मैं कांस्य 2 के लिए नया हूँ। मैंने अपने एकल पृष्ठ को "myapp" नामक फ़ोल्डर में अपने सर्वर में संग्रहीत किया है मैंने यूआरएल को बेस में http://example.com/myapp/ `को बदल दिया है I

मेरी परियोजना के दो पृष्ठ हैं इसलिए मैं कोयोनर 2 राउटिंग को लागू करता हूं। मैं लॉगिन के रूप में डिफ़ॉल्ट पृष्ठ सेट जब मैं अपने ब्राउज़र में http://example.com/myapp/ टाइप करता हूँ तो वह http://example.com/myapp/login स्वचालित रूप से रीडायरेक्ट हो जाएगा। लेकिन अगर उस पृष्ठ को मुझे रीफ़्रेश करते हैं तो मुझे 404 त्रुटि मिलती है, और कहती है कि http://example.com/myapp/login नहीं मिला है।

लेकिन अगर मैं लाइट सर्वर का उपयोग कर अपना प्रोजेक्ट चलाता हूं तो सब कुछ काम कर रहा है इस मामले आधार में index.html में यूआरएल "/" होगा इसे कैसे ठीक करें?

वेब के समाधान से एकत्रित समाधान "कोणीय 2: 404 त्रुटि तब होती है जब मैं ब्राउज़र के माध्यम से ताज़ा करता हूं"

वास्तव में, यह सामान्य है कि आपके पास 404 त्रुटि होती है, जब आपका ऐप रीफ्रेश होता है क्योंकि ब्राउज़र में वास्तविक पता अपडेट हो रहा है (और बिना # / हैशबांग दृष्टिकोण)। डिफ़ॉल्ट रूप से, एंजेलर 2 में पुनः उपयोग के लिए HTML5 इतिहास का उपयोग किया जाता है।

यदि आप 404 त्रुटि नहीं चाहते हैं, तो आपको आपके द्वारा निर्धारित प्रत्येक मार्ग पथ के लिए index.html फ़ाइल को सेवा देने के लिए अपने सर्वर को अपडेट करना होगा।

यदि आप हशबांग दृष्टिकोण पर स्विच करना चाहते हैं, तो आपको इस कॉन्फ़िगरेशन का उपयोग करना होगा:

 import {bootstrap} from 'angular2/platform/browser'; import {provide} from 'angular2/core'; import {ROUTER_PROVIDERS} from 'angular2/router'; import {LocationStrategy, HashLocationStrategy} from '@angular/common'; import {MyApp} from './myapp'; bootstrap(MyApp, [ ROUTER_PROVIDERS, {provide: LocationStrategy, useClass: HashLocationStrategy} ]); 

इस स्थिति में, जब आप पृष्ठ को ताज़ा करते हैं, तो इसे फिर से प्रदर्शित किया जाएगा (लेकिन आपके पास आपके पते में # होगा)।

यह लिंक आपकी सहायता भी कर सकता है: जब मैं अपनी वेबसाइट को रीफ़्रेश करता हूं मुझे 404 मिलता है। यह अंगुलर 2 और फायरबेस के साथ है ।

आशा है कि यह आपकी मदद करता है, थियरी

कोणीय 2 अंतिम संस्करण के लिए अद्यतन

App.module.ts में:

  • आयात जोड़ें:

     import { HashLocationStrategy, LocationStrategy } from '@angular/common'; 
  • और NgMoudle प्रदाता में, जोड़ें:

     {provide: LocationStrategy, useClass: HashLocationStrategy} 

उदाहरण (app.module.ts):

 import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AppComponent } from './app.component'; import { HashLocationStrategy, LocationStrategy } from '@angular/common'; @NgModule({ declarations: [AppComponent], imports: [BrowserModule], providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}], bootstrap: [AppComponent], }) export class AppModule {} 

विकल्प

RouterModule.forRoot का उपयोग {useHash: true} तर्क के साथ करें।

उदाहरण: ( कोयोनर डॉक्स से )

 import { NgModule } from '@angular/core'; ... const routes: Routes = [//routes in here]; @NgModule({ imports: [ BrowserModule, FormsModule, RouterModule.forRoot(routes, { useHash: true }) ], bootstrap: [AppComponent] }) export class AppModule { } 

उन लोगों के लिए जो (जैसे मेरे) को वास्तव में PathLocationStrategy स्ट्रेटजी के बजाय पथ PathLocationStrategy (यानी एचटीएमएल 5) की HashLocationStrategy , देखें कि कैसे: एन्जिलर विकी से html5Mode के साथ काम करने के लिए अपने सर्वर को कॉन्फ़िगर करें :

जब आपके पास html5Mode सक्षम है, तो # वर्ण अब आपके URL में उपयोग नहीं किए जाएंगे। # प्रतीक उपयोगी है क्योंकि इसके लिए सर्वर साइड कॉन्फ़िगरेशन की आवश्यकता नहीं है। # बिना, यूआरएल बहुत ही अच्छे लग रहा है, लेकिन इसके लिए सर्वर साइड पुन: लिखना भी आवश्यक है।

यहां मैं विकी से तीन उदाहरणों की प्रतिलिपि बना लेता हूं, अगर विकी खो जाते हैं फ़ायरबेज के लिए खोजशब्द "यूआरएल रिकॉर्टे" (उदाहरण के लिए यह जवाब ) खोजकर अन्य उदाहरण मिल सकते हैं।

अमरीका की एक मूल जनजाति

 <VirtualHost *:80> ServerName my-app DocumentRoot /path/to/app <Directory /path/to/app> RewriteEngine on # Don't rewrite files or directories RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] # Rewrite everything else to index.html to allow HTML5 state links RewriteRule ^ index.html [L] </Directory> </VirtualHost> 

पुनर्लेखन मॉड्यूल के लिए दस्तावेज़ीकरण

nginx

 server { server_name my-app; root /path/to/app; location / { try_files $uri $uri/ /index.html; } } 

try_files लिए दस्तावेज़ीकरण

आईआईएस

 <system.webServer> <rewrite> <rules> <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> </rules> </rewrite> </system.webServer> 

मुझे भी यही समस्या थी। मेरा कोणीय अनुप्रयोग विंडोज सर्वर पर चल रहा है

मैं रूट निर्देशिका में एक web.config फ़ाइल बनाकर इस समस्या का समाधान किया।

 <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="AngularJS" 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> </rules> </rewrite> </system.webServer> </configuration> 

शायद आप रूटर मॉड्यूल के साथ रूट को पंजीकृत करते समय ऐसा कर सकते हैं आप संपत्ति के साथ एक दूसरे ऑब्जेक्ट पास कर सकते हैं "useHash: true" नीचे की तरह:

 import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AppComponent } from './app.component'; import { ROUTES } from './app.routes'; @NgModule({ declarations: [AppComponent], imports: [BrowserModule], RouterModule.forRoot(ROUTES ,{ useHash: true }),], providers: [], bootstrap: [AppComponent], }) export class AppModule {} 

यदि आप विजुअल स्टूडियो 2015 में एएसपी.नेट कोर 1 के माध्यम से कांगारू 2 चला रहे हैं, तो आपको ये समाधान जुर्गेन गुस्ताफ से सहायक मिल सकता है। वह एक ब्लॉग पोस्ट में इसका वर्णन करता है। यह मेरे लिए सबसे अच्छा समाधान था अपने स्टार्टअप.cs में नीचे दी गई सी # कोड को सार्वजनिक रूप से रिक्त करें () बस app.UseStaticFiles () से पहले;

 app.Use( async ( context, next ) => { await next(); if( context.Response.StatusCode == 404 && !Path.HasExtension( context.Request.Path.Value ) ) { context.Request.Path = "/index.html"; await next(); } }); 

ऐसे लोगों को पढ़ने के लिए जो कांगार 2 आरसी 4 या बाद के संस्करण का उपयोग करते हैं, ऐसा प्रतीत होता है कि स्थान-साझेदारी को राउटर से आम में स्थानांतरित कर दिया गया है। आपको इसे वहां से आयात करना होगा

इसके अलावा 'प्रदान करें' लाइन के चारों ओर घुंघराले ब्रैकेट नोट करें

main.ts

 // Imports for loading & configuring the in-memory web api import { XHRBackend } from '@angular/http'; // The usual bootstrapping imports import { bootstrap } from '@angular/platform-browser-dynamic'; import { HTTP_PROVIDERS } from '@angular/http'; import { AppComponent } from './app.component'; import { APP_ROUTER_PROVIDERS } from './app.routes'; import { Location, LocationStrategy, HashLocationStrategy} from '@angular/common'; bootstrap(AppComponent, [ APP_ROUTER_PROVIDERS, HTTP_PROVIDERS, {provide: LocationStrategy, useClass: HashLocationStrategy} ]);