php - एकल पृष्ठ के htaccess 301 रीडायरेक्ट




.htaccess seo (4)

साइट रीडिज़ाइन करने के बाद, मेरे पास कुछ पेज हैं जिन्हें पुनर्निर्देशित करने की आवश्यकता है। सब कुछ एक ही डोमेन पर रह रहा है, केवल कुछ चीजें पुनर्गठित और / या नाम बदल दी गई हैं। वे फार्म के हैं:

/contact.php

अब है:

/contact-us.php

.htaccess फ़ाइल का उपयोग करके, मैंने यह लाइन जोड़ दी है, जिसे मैं सबसे ज्यादा अनुशंसित करता हूं:

RedirectMatch 301 /contact.php /contact-us.php

यह ज्यादातर ठीक है - यह नौकरी करता है - समस्या यह है कि यह रीडायरेक्ट भी करता है:

  • /team1/contact.php
  • /non-existant-folder/contact.php

क्या यह निर्दिष्ट करने का कोई तरीका है कि मैं रूट में contact.php को रीडायरेक्ट करना चाहता हूं?


यदि आप किसी समस्या के सबसे सरल समाधान का उपयोग करना पसंद करते हैं, तो RedirectMatch का एक विकल्प, अधिक बुनियादी, Redirect निर्देश है।

यह पैटर्न मिलान का उपयोग नहीं करता है और इसलिए दूसरों को समझने के लिए और अधिक स्पष्ट और आसान है।

अर्थात

<IfModule mod_alias.c>

#Repoint old contact page to new contact page:
Redirect 301 /contact.php http://example.com/contact-us.php

</IfModule>

क्वेरी स्ट्रिंग्स को ले जाना चाहिए क्योंकि दस्तावेज़ कहते हैं:

मिलान किए गए यूआरएल-पथ से परे अतिरिक्त पथ जानकारी लक्षित यूआरएल में जोड़ दी जाएगी।


यदि आप टेम्पलेट मिलान करने और यूआरएल को रीडायरेक्ट करने की क्षमता चाहते हैं तो आप RewriteRule का भी उपयोग कर सकते हैं।


यह करना चाहिए

RedirectPermanent /contact.php /contact-us.php 

RedirectMatch एक नियमित अभिव्यक्ति का उपयोग करता है जो यूआरएल पथ के साथ मेल खाता है। और आपकी नियमित अभिव्यक्ति /contact.php अर्थ केवल यूआरएल पथ है जिसमें /contact.php लेकिन केवल यूआरएल पथ नहीं है जो बिल्कुल /contact.php । तो स्ट्रिंग ( ^ और $) की शुरुआत और अंत के लिए एंकर का उपयोग करें:

RedirectMatch 301 ^/contact\.php$ /contact-us.php