redirect - जेकिल और गिटहब पेजेस में पुराने पृष्ठों के पुनर्निर्देशन के लिए सबसे अच्छा तरीका क्या है?




github jekyll (6)

मेरे पास github पृष्ठों पर ब्लॉग है - jekyll

यूआरएल रणनीति प्रवासन को हल करने का सबसे अच्छा तरीका क्या है?

मैंने पाया कि आम तौर पर सबसे अच्छा अभ्यास एचटीएसीएसी बना रहा है

Redirect 301 /programovani/2010/04/git-co-to-je-a-co-s-tim/ /2010/04/05/git-co-to-je-a-co-s-tim.html

लेकिन यह गिथूब के साथ काम नहीं करता है। मुझे मिला एक और समाधान रेक कार्य बना रहा है, जो पुनर्निर्देशन पृष्ठों को उत्पन्न करेगा। लेकिन चूंकि यह एक एचटीएमएल है, यह 301 हेड भेजने में सक्षम नहीं है, इसलिए एसई क्रॉलर इसे पुनर्निर्देशन के रूप में नहीं पहचान पाएंगे।


यह समाधान आपको .htaccess के माध्यम से वास्तविक HTTP रीडायरेक्ट का उपयोग करने की अनुमति देता है - हालांकि, .htaccess शामिल कुछ भी नहीं GitHub पृष्ठों पर काम करेगा क्योंकि वे अपाचे का उपयोग नहीं करते हैं।

मई 2014 तक गिटहब help.github.com/articles/redirects-on-github-pages , लेकिन जेम-रीडायरेक्ट के अनुसार जेम दस्तावेज से वे अभी भी HTTP-REFRESH ( <meta> टैग का उपयोग करके) पर आधारित हैं, जिसके लिए पुनर्निर्देशन होने से पहले एक पृष्ठ लोड पूर्ण होना आवश्यक है।

मुझे <meta> दृष्टिकोण पसंद नहीं है, इसलिए मैंने अपाचे का उपयोग करके एक .htaccess फ़ाइल में वास्तविक HTTP 301 रीडायरेक्ट प्रदान करने वाले किसी भी व्यक्ति के लिए एक समाधान को मार दिया, जो प्री-जेनरेट जेकिल साइट परोसता है:

सबसे पहले, _config.yml include संपत्ति include करने के लिए .htaccess जोड़ें

include: [.htaccess]

इसके बाद, एक .htaccess फ़ाइल बनाएं और YAML फ्रंट केस को शामिल करना सुनिश्चित करें। उन डैश महत्वपूर्ण हैं क्योंकि अब जैकिल फ़ाइल को तरल, जैकील की templating भाषा के साथ पार्स करेगा:

---
---
DirectoryIndex index.html

RewriteEngine On
RewriteBase /

...

सुनिश्चित करें कि रीडायरेक्ट की आवश्यकता वाले आपकी पोस्ट में दो गुण हैं:

---
permalink: /my-new-path/
original: blog/my/old/path.php
---

अब। Htaccess में, बस एक लूप जोड़ें:

{% for post in site.categories.post %}
  RewriteRule ^{{ post.original }} {{ post.permalink }} [R=301,L]
{% endfor %}

जब भी आप साइट बनाते हैं, यह गतिशील रूप से .htaccess उत्पन्न करेगा, और आपकी कॉन्फ़िगरेशन फ़ाइल में include है यह सुनिश्चित करता है कि .htaccess इसे _site निर्देशिका में बनाता है।

RewriteRule ^blog/my/old/path.php /my-new-path/ [R=301,L]

वहां से, अपाचे का उपयोग करके _site सेवा करने के लिए आप पर _site । मैं सामान्य रूप से पूर्ण जेकील रेपो को एक गैर-वेबूट निर्देशिका में क्लोन करता हूं, फिर मेरा vhost _site फ़ोल्डर में एक _site :

ln -s /path/to/my-blog/_site /var/www/vhosts/my-blog.com

टाडा! अब अपाचे आपके आभासी रूट से _site फ़ोल्डर की सेवा कर सकता है, जो .htaccess- संचालित रीडायरेक्ट के साथ पूरा हो सकता है जो आपके इच्छित HTTP प्रतिक्रिया कोड का उपयोग करता है!

आप सुपर फैंसी भी प्राप्त कर सकते हैं और प्रत्येक पोस्ट के सामने के मामले में एक redirect प्रॉपर्टी का उपयोग redirect हैं ताकि यह निर्धारित किया जा सके कि आपके .htaccess लूप में कौन से रीडायरेक्ट कोड का उपयोग किया जाए।


क्या आपने जेकिल एलियास जेनरेटर प्लगइन की कोशिश की है?

आपने पोस्ट के वाईएएमएल फ्रंट मामले में उपनाम यूआरएल डाल दिया है:

---
  layout: post
  title: "My Post With Aliases"
  alias: [/first-alias/index.html, /second-alias/index.html]
---

जब कोई उपयोगकर्ता उपनाम यूआरएल में से किसी एक पर जाता है, तो उसे मेटा टैग रीफ्रेश के माध्यम से मुख्य यूआरएल पर रीडायरेक्ट किया जाता है:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <meta http-equiv="refresh" content="0;url=/blog/my-post-with-aliases/" />
  </head>
</html>

विषय पर इस ब्लॉग पोस्ट को भी देखें।


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

जैकिल आपके ब्लॉग पोस्ट के वाईएएमएल फ्रंट-केस सेक्शन में परमालिंक विशेषता का समर्थन करता है। आप उस यूआरएल को निर्दिष्ट कर सकते हैं जिसे आप अपनी पोस्ट चाहते हैं और जेकिल आपकी साइट उत्पन्न करते समय (फ़ाइल नाम के बजाए) इसका उपयोग करेगा।

---
title: My special blog post
permalink: /programovani/2010/04/git-co-to-je-a-co-s-tim
---
My blog post markdown content

जैसा कि अन्य ने उल्लेख किया है, सबसे अच्छा समाधान काम करने वाले यूआरएल को संरक्षित करना या पृष्ठों को डुप्लिकेट करना और एक canonical यूआरएल निर्दिष्ट करना canonical

चूंकि जिथब पेज सच्चे रीडायरेक्ट का समर्थन नहीं करते हैं, इसलिए मैंने अपनी साइट के पुराने डोमेन से 301 (स्थायी) रीडायरेक्ट को वापस करने के लिए rerouter पर rerouter सेट करना चुना है। मैंने यहां विवरणों का वर्णन किया है:

http://joey.aghion.com/simple-301-redirects/


सबसे अच्छा समाधान <meta http-equiv="refresh" और <link rel="canonical" href=

यह बहुत अच्छी तरह से काम करता है, Google Bot ने पदों को खोए बिना नए लिंक के तहत अपनी पूरी वेबसाइट को दोबारा बनाया। इसके अलावा उपयोगकर्ताओं को तुरंत नए पदों पर रीडायरेक्ट कर दिया जाता है।

<meta http-equiv="refresh" content="0; url=http://konradpodgorski.com/blog/2013/10/21/how-i-migrated-my-blog-from-wordpress-to-octopress/">
<link rel="canonical" href="http://konradpodgorski.com/blog/2013/10/21/how-i-migrated-my-blog-from-wordpress-to-octopress/" />

<meta http-equiv="refresh" का उपयोग करके प्रत्येक विज़िटर को नई पोस्ट पर रीडायरेक्ट किया जाएगा। Google Bot के लिए, यह <link rel="canonical" href= 301 रीडायरेक्ट के रूप में व्यवहार करता है, प्रभाव यह है कि आप अपने पृष्ठों को पुनः प्राप्त कर लेते हैं और यही वह है जो आप चाहते हैं।

मैंने पूरी प्रक्रिया का वर्णन किया कि मैंने अपना ब्लॉग वर्डप्रेस से ऑक्टोप्रेस तक कैसे स्थानांतरित किया। http://konradpodgorski.com/blog/2013/10/21/how-i-migrated-my-blog-from-wordpress-to-octopress/#redirect-301-on-github-pages


रीडायरेक्ट-प्लगइन से https://github.com/jekyll/jekyll-redirect-from#redirect-to गिटहब द्वारा समर्थित है और इसे आसान बनाता है:

_config.yml :

gems:
  - jekyll-redirect-from

a.md :

---
permalink: /a
redirect_to: 'http://example.com'
---

जैसा कि यहां बताया गया है: https://help.github.com/articles/redirects-on-github-pages/

अभी व:

firefox localhost:4000/a

आपको example.com रीडायरेक्ट करेगा।

जब भी पृष्ठ द्वारा redirect_to परिभाषित किया redirect_to है तो प्लगइन खत्म हो redirect_to है।

गिटहब पेज v64 पर परीक्षण किया गया।

नोट : इस संस्करण में एक गंभीर हाल ही में तय की गई बग है जो रीडायरेक्ट के लिए डिफ़ॉल्ट लेआउट का गलत उपयोग करता है: https://github.com/jekyll/jekyll-redirect-from/pull/106

मैनुअल लेआउट विधि

यदि आप https://github.com/jekyll/jekyll-redirect-from का उपयोग करना पसंद नहीं करते हैं, तो इसे स्वयं लागू करना आसान है:

a.md :

---
layout: 'redirect'
permalink: /a
redir_to: 'http://example.com'
sitemap: false
---

HTML पृष्ठ से _layouts/redirect.html आधार पर _layouts/redirect.html :

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Redirecting...</title>
  {% comment %}
    Don't use 'redirect_to' to avoid conflict
    with the page redirection plugin: if that is defined
    it takes over.
  {% endcomment %}
  <link rel="canonical" href="{{ page.redir_to }}"/>
  <meta http-equiv="refresh" content="0;url={{ page.redir_to }}" />
</head>
<body>
  <h1>Redirecting...</h1>
  <a href="{{ page.redir_to }}">Click here if you are not redirected.<a>
  <script>location='{{ page.redir_to }}'</script>
</body>
</html>

इस उदाहरण की तरह, redirect-from प्लगइन redirect-from 301 उत्पन्न नहीं होता है, केवल meta + जावास्क्रिप्ट रीडायरेक्ट करता है।

हम यह सत्यापित कर सकते हैं कि क्या हो रहा है:

curl localhost:4000/a




github-pages