2013-01-23 45 views
8

मैं एक प्रोजेक्ट के लिए एक मौजूदा फाइल का नाम बदल रहा हूं जिस पर मैं काम कर रहा हूं। पिछली संगतता को बनाए रखने के लिए, मैं उपयोगकर्ताओं को नए पर रीडायरेक्ट करने के लिए एक cfm फ़ाइल छोड़ रहा हूं।cflhead बनाम cfheader 301 रीडायरेक्ट्स

  • buy.cfm: वर्ष
  • shop.cfm: नई

आदेश सब कुछ रखने के लिए संभव के रूप में स्वच्छ के रूप में, मैं एक उपयोगकर्ता के लिए जाने की कोशिश करता है तो 301 statusCode प्रतिक्रिया भेजना चाहते हैं में buy.cfm।

मुझे पता है कि मैं statuscode विशेषता

<cflocation url="shop.cfm" statuscode="301" addtoken="false"> 

के साथ या तो cflocation उपयोग कर सकते हैं या मैं cfheader टैग का उपयोग कर सकते हैं।

<cfheader statuscode="301" statustext="Moved permanently"> 
<cfheader name="Location" value="http://www.mysite.com/shop.cfm"> 

वहाँ एक दूसरे के ऊपर विधि का उपयोग करने के लिए किसी भी कारणों से कर रहे हैं?

उत्तर

11

मुझे लगता है कि वे <cflocation> अधिक पठनीय

+1

सहमत विर हेनरी। 'Cfheader' संस्करण बस आपके लिए' cflocation' क्या करता है इसका मैन्युअल संस्करण है। –

+3

ठीक है, थोड़ा और पढ़ना, ऐसा लगता है कि 'स्थिति कोड' विशेषता सीएफ 8 तक नहीं जोड़ा गया था, इसलिए सीएफहेडर पहले स्टेटसोड को विशेष रूप से वापस करने का एकमात्र तरीका था। –

+1

एफवाईआई - सीएफएलोकेशन स्टेटस कोड केवल 300 और 307 के बीच मान स्वीकार करता है। तो यदि, उदा।, आपको 201 स्टेटस कोड के साथ नव निर्मित संसाधन के स्थान को वापस करने की आवश्यकता है जिसे आपको cfheader का उपयोग करने की आवश्यकता होगी। –

4

मैं ColdFusion पर इस परीक्षण किया जा रहा है के साथ, एक ही बात करते हैं 9.

वहाँ एक बड़ा अंतर है, और यह कि cflocation है के निष्पादन बंद हो जाता है पृष्ठ और फिर निर्दिष्ट संसाधन पर रीडायरेक्ट करता है।

Adobe ColdFusion documentation से:

बंद हो जाता है वर्तमान पृष्ठ के निष्पादन और एक ColdFusion पेज या HTML फ़ाइल को खोलता है। यदि अन्य कोड cfheader टैग के बाद चलता है अन्यथा

<cflocation url="shop.cfm" statuscode="301" addtoken="false"> 

, आप समस्याओं में घिर जोखिम:

तो आप ऐसा करने की आवश्यकता होगी:

<cfheader statuscode="301" statustext="Moved permanently"> 
<cfheader name="Location" value="http://www.example.com/shop.cfm"> 
<cfabort> 

इस के बराबर लाने के लिए । मैं कुछ कोड को ठीक करते समय आया था जहां रीडायरेक्ट को application.cfm फ़ाइल में डाला गया था - सीएफहेडर का उपयोग करके - बाकी पेज प्रोसेसिंग को निरस्त किए बिना।

मैंने यह भी देखा, प्रतिक्रिया हेडर में, कि cflocation भी तदनुसार निम्न हेडर सेट:

Cache-Control: no-cache 
Pragma: no-cache 

इन हेडर जोड़ सकते हैं, स्थान के साथ cfheader टैग का उपयोग करता है, तो अगर जरूरत में:

<cfheader name="Cache-Control" value="no-cache"> 
<cfheader name="Pragma" value="no-cache"> 

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

  • कोई संबंधित समस्या नहीं^_^