.htaccess - AngularJS साइट पर ताज़ा करने पर 404 पृष्ठ प्राप्त करना?
github http-status-code-404 (3)
मैं 404 पृष्ठ पर सेवा कर रहा हूं जब भी मैं:
1.) मेरे Angularjs साइट पर किसी भी पृष्ठ को रीफ्रेश करें (रूट पृष्ठ के अलावा)
या
2.) 404 पृष्ठ से रूट पृष्ठ पर जाने के लिए वापस पर क्लिक करें (रूट पृष्ठ 404 होगा)
यहां मेरा .config()
कोड है .config()
'use strict';
angular.module('mmApp', ['ngResponsiveImages'])
.config(function ($locationProvider, $routeProvider) {
$locationProvider.html5Mode(true);
$locationProvider.hashPrefix = '!';
$routeProvider
.when('/', {
templateUrl: '/views/design.html',
controller: 'MainCtrl'
})
.when('/about', {
templateUrl: '/views/about.html',
controller: 'MainCtrl'
})
.when('/contact', {
templateUrl: '/views/contact.html',
controller: 'MainCtrl'
})
.otherwise({
redirectTo: '/'
});
});
मैं इस समान प्रश्न पर आया हूं लेकिन जवाबों को काफी समझ में नहीं आता है या उन्हें कैसे लागू किया जाए।
स्वीकृत उत्तर रूट के लिए सभी पथों को फिर से कॉन्फ़िगर करने के लिए अपाचे को सेटअप करने के लिए कहते हैं। मेरी साइट गिथब पेज पर है मेरे पास मेरे gh-pages
रेपो में एक .htaccess
फ़ाइल है लेकिन मुझे यह पता नहीं है कि रूट को सभी पथ भेजने के लिए इसे कॉन्फ़िगर कैसे करें।
जवाब कहते हैं कि एक और बात पर विचार करना <base>
तत्व <base href="/" />
का उपयोग कर रहा है, लेकिन मैं इसे कहां रखूँगा? मेरी index.html
? यदि ऐसा है तो उस फ़ाइल के ऊपर या नीचे? इसके अलावा, क्या मैं सिर्फ href
मूल्य को /
छोड़ दूँगा?
जिथूब पृष्ठ केवल स्थैतिक फ़ाइलों पर कार्य करते हैं। यह .htaccess में अपाचे के लिए आपके पास कोई भी कॉन्फ़िगरेशन सेटिंग्स नहीं पढ़ी जाएगी।
यदि आप html5Mode
पेजों के बाहर एक AngularJS ऐप को चलाने के लिए चाहते हैं, तो आप html5Mode
उपयोग नहीं कर सकते।
मैं यहाँ एक समाधान के पास आया: https://coderwall.com/p/kfomwa
यहाँ छोटी पोस्ट है:
कोणीयहें html5Mode प्रदान करता है, जो आपके ऐप का इस्तेमाल हैशटैग के बजाय पुस्टेट-आधारित यूआरएल करता है। हालांकि इसके लिए सर्वर साइड समर्थन की आवश्यकता है, चूंकि उत्पन्न यूआरएल को ठीक से भी ठीक से प्रस्तुत करना आवश्यक है।
यह वास्तव में गिथब पृष्ठों के कस्टम 404 पृष्ठों के साथ ठीक काम करता है, हालांकि यह केवल कस्टम डोमेन सक्षम पृष्ठों के लिए उपलब्ध है।
सबसे पहले, index.html को 404.html में सब कुछ कॉपी करें। उसके बाद, इसे अपने ऐप में जोड़ें:
angular.module('app', []).config(function($locationProvider) { $locationProvider.html5Mode(true); });
ध्यान दें कि यदि आप कोणीय 1.1.5 पर हैं, तो सुनिश्चित करें कि आप html5Mode को ठीक से काम करने के लिए सेट करते हैं।
इन सुझावों के बाद मैं अपनी साइट को ठीक से काम कर पा रहा था। अब जब मैं पुनः लोड मारा, तो पेज लोड ठीक से होता है।
मैं अपने अंगुलियज़ एप्लीकेशन को एनजीएक्स पर वागरेंट पर चला रहा हूं। और इसी तरह की समस्या का सामना करना पड़ रहा है। किसी भी यूआरएल के साथ ब्राउज़र को पुनः लोड करने पर, यह मुझे एक 404 पेज देता है
मैंने मुख्य जेएस फ़ाइल में html5mode को सक्षम किया है। जब आपके पास html5Mode सक्षम है, तो #
वर्ण अब आपके यूआरएल में इस्तेमाल नहीं होंगे। #
प्रतीक उपयोगी है क्योंकि इसमें सर्वर साइड कॉन्फ़िगरेशन की आवश्यकता नहीं है। #
बिना, यूआरएल बहुत अच्छा लगता है, लेकिन इसके लिए सर्वर साइड परिवर्तन की भी आवश्यकता होती है
यहां कुछ बदलाव किए गए हैं:
-
/etc/nginx/sites-enabled
फ़ोल्डर में nginx विन्यास फ़ाइल (nginx.conf
) को खोलें (पथ आपके nginx स्थापना निर्देशिका के आधार पर अलग-अलग होंगे)। -
try_files $uri $uri/ =404;
खोजेंtry_files $uri $uri/ =404;
और इसेtry_files $uri $uri/ /index.html;
साथtry_files $uri $uri/ /index.html;
- Nginx कॉन्फ़िगरेशन फ़ाइल को सहेजें
- Nginx
sudo service nginx restart
और मैंने ऊपर दिए गए बदलावों के बाद पृष्ठ को पुनः लोड करने की कोशिश की है यह अपेक्षा के अनुरूप काम करता है