होममेड URL शॉर्टनर 301 रीडायरेक्ट के साथ परस्पर विरोधी रीडायरेक्ट करता है


11

मेरे पास एक वेबसाइट है जिसे मूल रूप से क्लासिक एएसपी का उपयोग करके बनाया गया था। लगभग एक साल पहले यह PHP में फिर से लिखा गया था। इससे फ़ाइल एक्सटेंशन बदल गए और कुछ पृष्ठ वेबसाइट के नए स्थानों पर चले गए। स्वाभाविक रूप से हमने पुराने URL से नए URL में 301 रीडायरेक्ट किए, ताकि उनके उपयोगकर्ता और खोज इंजन अपने नए स्थान पा सकें। यह ठीक काम करता है।

हमने उन्हें एक उपकरण भी बनाया है जो साइट के मालिक को अपने छोटे URL बनाने की अनुमति देता है, जो Google Analytics अभियान पर नज़र रखने वाले चरों के साथ एक पृष्ठ पर पुनर्निर्देशित करता है जो URL में शामिल हैं ताकि वे अभियान को ट्रैक कर सकें और देखें कि यह कैसा प्रदर्शन करता है।

मेरे पास जो मुद्दा है, वह अभियान ट्रैकिंग नियम 301 रीडायरेक्ट के साथ संघर्ष करता है और रीडायरेक्ट को बिल्कुल भी काम करने से रोकता है।

यहां अभियान ट्रैकिंग कोड दिया गया है:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]

जैसा कि आप देख सकते हैं कि यह देखने के लिए कि क्या कोई फ़ाइल मौजूद है और यदि यह ट्रैकिंग स्क्रिप्ट (ट्रैकिंग.php) पर पुनर्निर्देशित नहीं करता है, तो वह ट्रैकिंग कोड लेता है और क्वेरी में Google Analytics अभियान कोड के साथ उचित URL पर पुनर्निर्देशित करता है स्ट्रिंग।

यह कोड विफल होने के लिए इस तरह के नियमों का कारण बनता है:

redirect 301 /about.asp /about.php
redirect 301 /capabilities.asp /capabilities.php
redirect 301 /capacitors.asp /capacitors.php

यह समझ में आता है कि यह एक साथ काम नहीं करता है क्योंकि ट्रैकिंग नियम कहते हैं, "अगर कोई फ़ाइल ट्रैकिंग के लिए पुनर्निर्देशित नहीं हुई है।" 301 रनडायरेक्ट्स को पहले चलाने के लिए मुझे जो चाहिए वह है, और यदि उनमें से कोई भी मैच नहीं करता है, तो ट्रैकिंग स्क्रिप्ट पर रीडायरेक्ट करें। 301 रीडायरेक्ट के नीचे ट्रैकिंग नियम रखने से परिणाम नहीं बदलते हैं।

क्या इसे .htaccess के माध्यम से किया जा सकता है? या क्या मुझे ट्रैकिंग स्क्रिप्ट को संशोधित करने की आवश्यकता होगी ताकि यदि कोई अभियान नहीं मिलता है, तो यह देखने के लिए जांच करे कि क्या अभियान आईडी वास्तव में एक पुराना पृष्ठ है जिसे पुनर्निर्देशित करने की आवश्यकता है और फिर वहाँ से 301 पुनर्निर्देशित करें?

जवाबों:


5

अपने mod_aliasरीडायरेक्ट को mod_rewriteनिर्देशों में बदलने की कोशिश करें ।


संपादित करें: नीचे दिए गए उदाहरणों से माना जाता है कि आपने पुरानी ASP फ़ाइलों को उसी पथ के तहत PHP फ़ाइलों के साथ बदल दिया है।

RewriteEngine on

# *.asp -> *.php
RewriteRule (.*)\.asp$ /$1.php [R=301,L]

# tracking script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]

... या आप नियमित अभिव्यक्ति चर को छोड़ सकते हैं और पुराने URI के प्रत्येक के लिए एक स्पष्ट पुनर्निर्देशन सेट कर सकते हैं:

RewriteRule about\.asp$ /about.php [R=301,L]
RewriteRule capabilities\.asp$ /capabilities.php [R=301,L]
RewriteRule capacitors\.asp$ /capacitors.php [R=301,L]

# 2 संपादित करें: यहां एक उदाहरण दिया गया है, जिसमें आपके द्वारा सामना की जाने वाली अधिकांश स्थितियों को कवर करना चाहिए:

RewriteEngine on

# Changes to path + Query String Append
RewriteRule ^/path/to/old\.asp$ /path/to/new/about.php [R=301,L,QSA]

# *.asp -> *.php + Query String Append
RewriteRule ^(.*)\.asp$ $1.php [R=301,L,QSA]

# tracking script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]

मुझे नहीं पता तुम्हारा क्या मतलब है। क्या आप एक उदाहरण दे सकते हैं जो मैंने अपने प्रश्न में दिखाया है।
जॉन कोंडे

संपादन के लिए धन्यवाद। अब समझ में आता है। मुझे लगता है कि मेरा आखिरी मुद्दा उन फाइलों के साथ क्या होगा जिनके पथ बदल गए हैं? क्या यह संभव है? या मैं बहुत ज्यादा पूछ रहा हूँ?
जॉन कोंडे

आप उन फ़ाइलों के लिए स्पष्ट पुनर्निर्देशन सेट कर सकते हैं (यदि अधिकांश पथ बदल गए हैं, तो आप कॉन्फ़िगरेशन को बनाए रखने के लिए सभी फ़ाइलों के लिए स्पष्ट पुनर्निर्देशन का उपयोग कर सकते हैं)।
डैनलेफ्री

मुझे संदेह नहीं [R=301,L]है कि प्रत्येक रीडायरेक्ट के बाद मेरे मुद्दे का कारण क्या है। मुझे कोशिश करने दो और मैं तुम्हें बता दूंगा कि क्या होता है।
जॉन कोंडे

*.asp -> *.phpवाइल्डकार्ड महान काम करता है। उन पृष्ठों के लिए अलग-अलग नियम जो सीधे संक्रमण नहीं हैं और क्वेरी स्ट्रिंग हैं, परेशानी वाले हैं। लेकिन यह जाने का सही तरीका लगता है। अगर मुझे वह हिस्सा नहीं मिला तो मैं इसके बारे में एक नया सवाल शुरू करूँगा।
जॉन कोंडे

-1

मैं रीडायरेक्ट को उल्टा करूंगा और इसे मूल रूप से छोड़ दूंगा। अपनी नई साइट को अपनी OLD साइट पर पुनर्निर्देशित करें। आपकी ओएलडी साइट शायद पहले से ही बैक-लिंकिंग, वेबसाइट की उम्र और एसईओ से लाभान्वित हो रही है। यह खोने के लिए एक शर्म की बात होगी कि सिर्फ इसे एक नई साइट w / एक निचले पृष्ठ रैंक के साथ बदलने के लिए। Google रीडायरेक्ट करता है। आपकी नई साइट पर कोई एसईओ नहीं होगा फिर भी उस पर एक रीडायरेक्ट का उपयोग करना बेहतर होगा :)


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

FYI करें, Google पुनर्निर्देशन के लिए दंडित नहीं करता है। एक ही मुद्दा पुनर्निर्देशित है अगर वे बहुत गहराई से जंजीर में बंधे हैं तो वे उनका अनुसरण करना बंद कर देते हैं और 301 करते समय कुछ पीआर खो जाते हैं लेकिन यह राशि तुच्छ है और इसे बिल्कुल नहीं करने के विकल्पों की तुलना में इसके लायक है।
जॉन कोंडे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.