2012-11-29 13 views
15

मैंने अपाचे 301 का उपयोग करके एसईओ यूआरएल को वेबसाइट की जड़ में 'redirect.cfm' पर रीडायरेक्ट किया है जो सभी यूआरएल बिल्डिंग और सामग्री वितरित करता है।अपाचे 301 पोस्ट डेटा को रीडायरेक्ट और संरक्षित करना

पोस्ट डेटा 301 रीडायरेक्ट के दौरान खो गया है।

अब तक कोई समाधान नहीं ढूंढ पा रहा है, फिर से लिखने से पोस्ट विधि को छोड़ने का प्रयास किया है - सबसे खराब स्थिति परिदृश्य हम पोस्ट विधियों के लिए पुराने प्रकार के यूआरएल का उपयोग कर सकते हैं।

क्या ऐसा कुछ किया जा सकता है?

धन्यवाद

+0

वास्तव में एक और समाधान, वह मेरे लिए बेहतर होगा फार्म और कार्रवाई है कि के लिए गंतव्य एसईओ यूआरएल गणना करने के लिए है। अतिरिक्त क्वेरी, लेकिन यूआरएल संरक्षित किया जाएगा और एक 301 रीडायरेक्ट की आवश्यकता नहीं होगी। –

उत्तर

15

पोस्ट डेटा रीडायरेक्ट पर छोड़ दिया जाता है के रूप में एक ग्राहक यूआरएल 301. अवधि द्वारा निर्दिष्ट करने के लिए एक GET अनुरोध प्रदर्शन करेंगे।

एकमात्र विकल्प POST पैरामीटर को GET पैरामीटर में कनवर्ट करना है और उन्हें उस यूआरएल के अंत में ले जाना है जिसे आप रीडायरेक्ट कर रहे हैं। यह .htaccess फ़ाइल पुनर्लेखन में नहीं किया जा सकता है।

एक विकल्प यूआरएल को पुनर्निर्देशित करने के लिए POST अनुरोधों को पकड़ना है और इसे रीडायरेक्ट को संभालने के लिए किसी पृष्ठ पर भेजना है। आपको कोड में पैरामीटर की पारदर्शिता करने की आवश्यकता होगी, फिर पैरामीटर के साथ रीडायरेक्ट हेडर जारी करें, जिस तरह से नए यूआरएल को जोड़ा गया है।

अपडेट: जैसा कि आप इस उत्तर में टिप्पणियों में इंगित करते हैं, यदि आप पोस्ट पैरामीटर निर्दिष्ट करने वाले किसी अन्य यूआरएल पर रीडायरेक्ट करते हैं और उस यूआरएल को पैरामीटर के बिना भी एक्सेस किया जाता है (या पैराम वैरिएबल हैं), तो आपको कैननिकल के लिए एक लिंक निर्दिष्ट करना चाहिए पेज के लिए यूआरएल।

http://www.example.com/finalpage.php?form_data_1=123&form_data_2=666 

आप पृष्ठ के शीर्ष अनुभाग के लिए इस लिंक रिकॉर्ड जोड़ना होगा:

POST में निम्नलिखित प्राप्त संसाधन में स्थानांतरित रीडायरेक्ट कहो

<link rel="canonical" href="http://www.example.com/finalpage.php" /> 

यह सब एसईओ मूल्य सुनिश्चित करना होगा http://www.example.com/finalpage.php को दिया जाएगा और डुप्लिकेट सामग्री के साथ संभावित मुद्दों से बचें।

+0

धन्यवाद, मुझे लगता है कि ऐसा करने के लिए लॉग इन फॉर्म ब्राउज़र यूआरएल बार में उपयोगकर्ता नाम/पासवर्ड प्रदर्शित कर सकते हैं। मैं गणना की गई गतिशील एसईओ यूआरएल पर पोस्ट करने के लिए प्रत्येक फॉर्म को अपडेट करने की दिशा में खुद को स्टीयर कर रहा हूं। –

+1

@DanielCook अगर आप एक ही डोमेन यूआरएल पर रीडायरेक्ट करते हैं तो आप POST चर को सत्र में डाल सकते हैं और आप उन्हें यूआरएल में नहीं चाहते हैं। बस रीडायरेक्ट जारी करने से पहले सत्र को फ्लश करने के लिए मजबूर करना न भूलें। मुझे नहीं लगता कि जीईटी पैरामीटर एक यूआरएल के एसईओ को प्रभावित करते हैं, हालांकि, यह सिर्फ दृष्टि से बदसूरत होगा। – Ray

+0

धन्यवाद, शायद यह काम करेगा। अपाचे सभी पोस्ट अनुरोधों को 'redirectPost.cfm' पर भेजता है, यह स्टोर session.form में डेटा बनाता है और यूआरएल (पोस्ट डेटा खोना) को रीडायरेक्ट करता है। एक बार 'redirect.cfm' इसे चुनने के बाद सामग्री को वितरित करने से पहले सभी सत्र .form डेटा को फ़ॉर्म स्कोप में वापस लिखता है। –

0

सामान्य यूआरएल पुनर्लेखन के लिए 301 रीडायरेक्ट का उपयोग करने का तरीका नहीं है। यह एक प्रदर्शन मुद्दा है (विशेष रूप से मोबाइल के लिए, लेकिन सामान्य रूप से), क्योंकि यह आपके पृष्ठ के अनुरोधों की संख्या को दोगुना करता है।

Tuckey के URLrewriteFilter या अपाचे mod_rewrite जैसी URL पुनर्लेखन उपकरण का उपयोग कर के बारे में सोचो।

क्या रे ने कहा कि यह सच है, यह आपके सामान्य दृष्टिकोण पर एक अतिरिक्त टिप्पणी है।

+0

मैंने उपरोक्त को देखा है, जो संभव है उसके बारे में एक विचार प्राप्त करने का प्रयास कर रहा है। एक उदाहरण सुझाव मानक यूआरएल: http://www.example.com/list.cfm?product=fruit&page=1&order=asc&perpage=30 यूआरएल पुनर्लेखन: http://www.example.com/list/fruit/ एसी/30/1 हालांकि मेरे यूआरएल डोमेन.com/folder1/folder2/folder3/index.cfm?id=12345 और डोमेन.com/area/id-title-of-the-article/ को हल करेंगे जानकारी डीबी में उपलब्ध नहीं है और शीर्षक और क्षेत्र का पता लगाने के लिए कुछ डीबी प्रश्नों की आवश्यकता होगी। –

37

का उपयोग करते हुए एक 307 होना चाहिए exactly what you want

307 Temporary Redirect (since HTTP/1.1) 
In this case, the request should be repeated with another URI; however, future requests 
should still use the original URI.[2] In contrast to how 302 was historically implemented, 
the request method is not allowed to be changed when reissuing the original request. For 
instance, a POST request should be repeated using another POST request 

- Wikipedia

+2

यह काम करता है, और आप केवल 312 रीडायरेक्ट्स को POST अनुरोधों पर केवल – chrismarx

+0

@chrismarx पर लागू करके 301 रीडायरेक्ट की दक्षता रख सकते हैं आप यह कैसे करते हैं? –

+4

मैंने यह जोड़ा: रिवाइटकंड% {REQUEST_METHOD} = POST और फिर अगली पंक्ति पर, यह: रिवाइट्रूल /my-app/(.*) $/$ 1 [आर = 307] – chrismarx

संबंधित मुद्दे