Apache2 - 301 अनुप्रेषित जब यूआरएल में निर्देशिका के अंत में "/" गायब हो


13

मैंने वास्तव में इस रीडायरेक्ट (301) पर ध्यान नहीं दिया है, जब अंत में इस तरह के स्लैश ("/") के बिना एक यूआरएल का अनुरोध किया जाता है: http://server/directory

सर्वर 301 रीडायरेक्ट परमानेंट हैडर के साथ लोकेशन हेडर के साथ रिस्पॉन्ड करेगा http://server/directory/

देखिये इसका जीता जागता उदाहरण:

उपयोगकर्ता अनुरोध:

GET /social HTTP/1.1
( http://192.168.1.111/social )

अपाचे सर्वर प्रतिक्रिया:

HTTP/1.1 301 Moved Permanently
Location: http://192.168.1.111/social/

उपयोगकर्ता अनुरोध:

GET /social/ HTTP/1.1
( http://192.168.1.111/social/ )

अपाचे सर्वर प्रतिक्रिया:

HTTP/1.1 200 OK

Apache access.log:

192.168.1.130 - - [05/Apr/2014:22:06:47 +0200] "GET /social HTTP/1.1" 301 558 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"
-
192.168.1.130 - - [05/Apr/2014:22:06:47 +0200] "GET /social/ HTTP/1.1" 200 942 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"

/ सामाजिक / निर्देशिका में एक index.htmlफ़ाइल शामिल है।

अपाचे सॉफ्टवेयर: Apache/2.2.22 (Ubuntu)
निर्देशिका विकल्प:Options Indexes FollowSymLinks MultiViews

तो, मेरा सवाल है: अपाचे ऐसा क्यों कर रहा है? और रीडायरेक्ट को कैसे रोकें और index.htmlसीधे बाहर भेजें ? ग्राहकों को दो अनुरोध भेजने होते हैं जो वास्तव में अनावश्यक है। और हो सकता है कि कुछ क्लाइंट Redirects की अनुमति न दें और अंत स्लैश ("/") के बिना साइट पर नहीं जा पाएंगे।

मैं अनुप्रेषित को अक्षम नहीं करना चाहता। मैं सर्वर को बिना किसी रीडायरेक्ट के सीधे प्रतिक्रिया भेजने के लिए तैयार नहीं करता। निवेदन करने पर भी /social

क्या अपाचे को उन अनुरोधों को पुनर्निर्देशित करने के लिए डिज़ाइन किया गया है? सर्वर सिर्फ पुनर्निर्देशन के बिना डेटा भेज सकता है, है ना? क्या मुझे mod_rewriteइसे रोकने के लिए उपयोग करना चाहिए ? या एक और विन्यास? या मैं बस इसे ऐसे ही रहने दूं और सभी html लिंक के अंत में एक स्लैश जोड़ दूं और कुछ रीडायरेक्ट के साथ रहूं?

आप लोग क्या सोचते हैं?


मुझे लगता है कि आपको स्पष्ट करना होगा कि आप इसे क्यों निष्क्रिय करना चाहते हैं। पुनर्निर्देशन के लिए एकमात्र एकमात्र विकल्प /socialआपके उदाहरण के लिए 404 के साथ जवाब देना होगा ।
हाकन लिंडक्विस्ट

मैं इसे अक्षम नहीं करना चाहता, बस पुनर्निर्देशन को रोकना चाहता हूं। मैं सर्वर को index.htmlबिना रीडायरेक्ट के आउटपुट देना
चाहूंगा

"यह" द्वारा मैं गलत url से सही url में रीडायरेक्ट के साथ सामान्य व्यवहार की बात कर रहा था। कुछ कारणों से @kasperd से उत्तर देखें कि उदाहरण के लिए सामग्री की सेवा करना कितना बुरा होगा /social। (इसके अलावा, सामान्य तौर पर, कई यूट्रल्स में समान सामग्री परोसना आम तौर पर वांछित नहीं होता है।)
हेकैन लिंडक्विस्ट

जवाबों:


10

पुनर्निर्देशित किए बिना डेटा भेजने से रिश्तेदार लिंक टूट जाएंगे। यदि http://server/directoryशामिल है file, तो उसके लिए पूर्ण URL होगा http://server/directory/file। आधार URL जैसा है , तो <a href="file">इंगित किया गया एक लिंक इंगित करेगा , लेकिन यदि आधार URL केवल वह था जो इसके बजाय इंगित करेगा , जो कि अपेक्षित परिणाम नहीं है।http://server/directory/filehttp://server/directory/http://server/directoryhttp://server/file

अपाचे रीडायरेक्ट करने के बजाय URL के आधार पर दो अलग-अलग तरीकों से निर्देशिका सूची तैयार कर सकता है। हालाँकि अगर index.htmlडायरेक्टरी में कोई फ़ाइल होती है तो यह काम नहीं करेगा । इसलिए इसके बजाय अपाचे दृष्टिकोण का उपयोग कर रहा है, जो दोनों मामलों में काम करता है।

यह एक नया व्यवहार नहीं है, एक दशक पहले अपाचे उसी तरह व्यवहार कर रहा था। जो ग्राहक पुनर्निर्देशन को संभाल नहीं सकते, उन्हें अब तक ठीक कर लिया जाना चाहिए। लेकिन किसी भी क्लाइंट के लिए जो पुनर्निर्देशन को संभाल नहीं सकता है, अपाचे को लिंक के साथ एक छोटे HTML फ़ाइल के साथ भेजा जाना चाहिए जिसे इसके बजाय अनुसरण किया जा सकता है।


इस सवाल का जवाब नहीं है। यह सही है, रिश्तेदार लिंक टूट सकते हैं। लेकिन अगर कोई किसी पथ-प्रदर्शक स्लैश के बिना किसी पथ के लिए सामग्री वितरित करना चाहता है, तो हो सकता है कि वे उस के लिए resaons हों, उदाहरण के लिए जब POST एक webservice के लिए अनुरोध भेजा जाता है। Webservices में कोई सापेक्ष लिंक नहीं हैं, और पुनर्निर्देशन से POST निकाय खो जाएगा।
फू फू मांचू

9

mod_dirइस रीडायरेक्ट को जोड़ता है, और आप इसे एक DirectorySlash Offनिर्देश के साथ अक्षम कर सकते हैं ।

हालाँकि, ध्यान दें कि अनुगामी स्लैश को पुनर्निर्देशित करने से कुछ पृष्ठ टूट सकते हैं। यदि लौटाए जा रहे पृष्ठ में संबंधित लिंक होते हैं, तो उन URL को अलग-अलग हल किया जाएगा यदि पृष्ठ को अनुगामी स्लैश के बिना परोसा जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.