Giải pháp này cho phép bạn sử dụng chuyển hướng HTTP thực qua .htaccess - tuy nhiên, không có gì liên quan đến .htaccess sẽ hoạt động trên các trang GitHub vì chúng không sử dụng Apache.
Kể từ tháng 5 năm 2014, các Trang GitHub hỗ trợ chuyển hướng , nhưng theo tài liệu jekyll-redirect-from Gem thì chúng vẫn dựa trên HTTP-REFRESH (sử dụng <meta>
thẻ), yêu cầu tải trang đầy đủ trước khi chuyển hướng có thể xảy ra.
Tôi không thích <meta>
cách tiếp cận này, vì vậy tôi đã đưa ra giải pháp cho bất kỳ ai muốn cung cấp chuyển hướng HTTP 301 thực trong tệp .htaccess bằng Apache, phục vụ trang web Jekyll được tạo trước:
Đầu tiên, thêm .htaccess
vào thuộc include
tính trong_config.yml
include: [.htaccess]
Tiếp theo, tạo tệp .htaccess và đảm bảo bao gồm vấn đề phía trước YAML . Những dấu gạch ngang đó rất quan trọng vì bây giờ Jekyll sẽ phân tích cú pháp tệp bằng Liquid, ngôn ngữ tạo mẫu của Jekyll:
---
---
DirectoryIndex index.html
RewriteEngine On
RewriteBase /
...
Đảm bảo rằng các bài đăng của bạn yêu cầu chuyển hướng có hai thuộc tính như sau:
---
permalink: /my-new-path/
original: blog/my/old/path.php
---
Bây giờ trong .htaccess, chỉ cần thêm một vòng lặp:
{% for post in site.categories.post %}
RewriteRule ^{{ post.original }} {{ post.permalink }} [R=301,L]
{% endfor %}
Thao tác này sẽ tự động tạo .htaccess mỗi khi bạn xây dựng trang web và include
tệp cấu hình trong tệp của bạn đảm bảo rằng .htaccess biến nó thành_site
thư mục.
RewriteRule ^blog/my/old/path.php /my-new-path/ [R=301,L]
Từ đó, _site
việc sử dụng Apache tùy thuộc vào bạn . Tôi thường sao chép repo Jekyll đầy đủ vào một thư mục không phải webroot, sau đó vhost của tôi là một liên kết tượng trưng đến_site
thư mục:
ln -s /path/to/my-blog/_site /var/www/vhosts/my-blog.com
Tada! Giờ đây, Apache có thể phục vụ thư mục _site từ thư mục gốc ảo của bạn, hoàn chỉnh với các chuyển hướng được hỗ trợ bởi .htaccess sử dụng bất kỳ mã phản hồi HTTP nào bạn muốn!
Bạn thậm chí có thể trở nên cực kỳ ưa thích và sử dụng một redirect
thuộc tính trong mỗi vấn đề của bài đăng để chỉ định mã chuyển hướng nào sẽ sử dụng trong vòng lặp .htaccess của bạn.