मैंने फिर से लिखा था file.js?c=123 सेवा file.js.php?c=123 लेकिन क्वेरी परम मेरे एसईओ मूल्यांकन को अपग्रेड कर रहे थे। दरअसल, कुछ प्रॉक्सी CDN क्वेरी परम को कैश नहीं करते हैं।

server { location ~ \startscript.js$ { rewrite (.*) $1.php last; } } 

इसलिए, मैं फिर से लिखना चाहूंगा file.123.js सेवा file.js.php?c=123। क्या यह संभव है?

  • 1 "कुछ प्रॉक्सी CDN क्वेरी पैरा को कैश नहीं करते हैं" - क्या आप कुछ थे पढ़ना, या कुछ आपने अनुभव किया? इससे "SEO" के संदर्भ में कोई फर्क नहीं पड़ना चाहिए?
  • @MrWhite my SEO querystring के साथ url को लागू करने के बाद कम हो गया है। दरअसल, GTMetrix ने इससे संबंधित चेतावनी दी है।
+50
location ~ \startscript.js$ { 

रेगेक्स में \s अपनी शुरुआत में uri एक शॉर्टहैंड चरित्र वर्ग है जो एकल से मेल खाता है अंतरिक्ष (या "व्हाट्सएप चरित्र")। तो यह कुछ भी मिलान होने की संभावना नहीं है। हालाँकि, आपको फ़ाइल एक्सटेंशन से पहले शाब्दिक बिंदु से बचना चाहिए।

मैं "फ़ाइल" मान रहा हूं file.js हो सकता है कोई भी फ़ाइल, यह हमेशा "शुरुआत" नहीं है?

इसके बजाय निम्नलिखित प्रयास करें (UPDATED):

server { location ~ \.js$ { rewrite (.+)\.(\d+)\.js$ $1.js.php?c=$2 last; } } 

हालाँकि, जैसा कि मैंने टिप्पणियों में उल्लेख किया है, इससे SEO के संबंध में कोई फर्क नहीं पड़ता (खोज यन्त्र क्वेरी स्ट्रिंग को ठीक से संभालें - हमेशा पास)। अतीत में, यह संभवतः एक था प्रयोज्य समस्या, क्योंकि कुछ प्रॉक्सी सर्वर क्वेरी स्ट्रिंग के आधार पर कैश नहीं करते थे - इसलिए उपयोगकर्ताओं को सही सामग्री नहीं दिख सकती थी (यदि वे इस तरह से व्यवहार करने वाले प्रॉक्सी के पीछे थे) - लेकिन यह है ऐतिहासिक AFAIK।

निम्नलिखित प्रश्न के लिए मेरा उत्तर भी देखें:

  • सीएसएस / जेएस फ़ाइलों में संस्करण स्ट्रिंग बनाम एम्बेडिंग नंबर का उपयोग करके ट्रेडऑफ़ करें

... यह 404 त्रुटि फेंक रहा है, जैसे: domain.com/startscript.82b4527379bd2540f79f532950c7b96b.js

उपरोक्त उदाहरण विशेष रूप से केवल अंकों के साथ मेल खाता है (जैसा कि आपके प्रारंभिक उदाहरण में)। आपके पास जो कुछ है वह 32 char hex value (हैश?) जैसा दिखता है। इसके बजाय निम्नलिखित प्रयास करें (UPDATED):

rewrite '(.+)\.([\da-f]{32})\.js$' $1.js.php?c=$2 last; 

या अधिक सामान्य का उपयोग करें \w+, जैसा कि @devnull ने टिप्पणियों में सुझाव दिया, किसी भी "शब्द" चरित्र (यानी) से मेल खाने के लिए। 0-9, a-z, A-Z तथा _)। हालांकि रेगेक्स के साथ, यह आमतौर पर जितना संभव हो उतना विशिष्ट होने की सलाह दी जाती है, इसलिए यदि यह हमेशा 32 char हेक्स है तो 32 char हेक्स से मेल खाता है।

  • हम्म, यह 404 त्रुटि फेंक रहा है, जैसे: domain.com/startscript.82b4527379bd2540f79f532950c7b96b.js
  • 1 @fiskolin, आपके प्रश्न ने केवल पूर्णांक दिखाए। आपके द्वारा अभी पोस्ट किया गया उदाहरण URL पूर्णांक और अक्षरों का उपयोग करता है। बदलने की कोशिश करें (\d+) सेवा (\w+) MrWhite के जवाब में और जो आपके द्वारा प्रदान किए गए नमूने के साथ मेल खाना चाहिए।
  • मैंने अपना उत्तर अपडेट कर दिया है।
  • 1 @MrWhite, स्थान पर पहला मैच location ~ \.js$ डब्ल्यू / rewrite (.+)\.(\d+)\.js$ $1.php?c=$2 last; काम नहीं कर रहा है (404 त्रुटि फेंकना)। दूसरा सोल। rewrite (.+)\.([\da-f]{32})\.js$ $1.php?c=$2 last; nginx conf फ़ाइल पर एक त्रुटि फेंक रहा है नगनेक्स: [एमआरजी] निर्देशात्मक "रीराइट" "द्वारा समाप्त नहीं किया गया है;"। पर परीक्षण किया गया nginx version: nginx/1.10.2.
  • आह, क्षमा करें, मैं चूक गया था .js लक्ष्य URL से एक्सटेंशन। सोंड सॉल्यूशन को रेगेक्स के चारों ओर के उद्धरणों की भी आवश्यकता होती है, क्योंकि इसमें समाहित है }। मैंने अपना उत्तर अपडेट कर दिया है।

आप के लिए काम किया: Charles Robertson | हमसे संपर्क करना चाहते हैं?