Thứ Hai, ngày 19 tháng 9 năm 2011

Tim hieu co ban ve .htaccess va redirect 301

Số lượt xem: 372
Gửi lúc 09:55' 27/02/2010

Tìm hiểu cơ bản về .htaccess và redirect 301

Redirection 301 và ứng dụng tốt là một kỹ năng cơ bản mà các webmaster cần nắm bắt để ứng dụng tốt SEO không chỉ cho người dùng thường mà còn cho cả máy tìm kiếm.

Vấn đề thường gặp của Webmaster và giải pháp

Kịch bản ứng dụng Redirect 301

Bạn nâng cấp toàn bộ hay một phần website. Đơn giản hơn là bạn chỉ di chuyển một vài file hay thư mục hoặc đổi tên đường dẫn bài viết. Máy tìm kiếm đánh chỉ số toàn bộ website của bạn trong đó có rất nhiều trang có thứ hạng Pagerank tốt. Do bị di chuyển hay đổi tên các trang này, mà bạn sẽ mất phần lớn lưu lượng và khách hàng tìm đến các trang nói trên từ máy tìm kiếm, và kết cục là chỉ thấy dòng thông báo "Error 404 - File not found"

Giải pháp 1: Tùy biến trang báo lỗi 404

Bạn tạo một trang báo lỗi riêng. Vấn đề sẽ được giải quyết như sau:

1. Bạn sẽ vấn mất thứ hạng trên máy tìm kiếm trong lần cập nhật tiếp theo bởi các trang cũ không còn tồn tại. Phải mất một thời gian để máy tìm kiếm đánh chỉ số lại các trang tại địa chỉ mới;
2. Người dùng cảm thấy không thoải mái khi phải dò tìm website của bạn để tìm được các trang đã bị thay đổi đường dẫn.
3. Ngoài ra, các trang mới phải mất nhiều thời gian mà chưa chắc lấy lại độ trung thực và duy nhất của thông tin đối với máy tìm kiếm. Và kết quả là các trang đi copy lại nội dung website của bạn rất có thể sẽ có thứ hạng cao các trang mới của bạn. Ngoài ra bạn cũng mất toàn bộ liên kết bên ngoài trỏ tới bài viết cũ.

Giải pháp 2: Sử dụng Meta Refresh

Bạn có thể sử dụng Meta Refresh chèn giữ thẻ trong mã nguồn HTML của một trang trắng nằm tại đường dẫn cũ. Thẻ Meta Refresh này sẽ cho phép chuyển hướng người dùng và bọ tìm kiếm tới trang mới. Ví dụ: chuyển bài viết từ địa chỉ cũ tới http://tuoitretrungoai.com/trang-khac/

< meta HTTP-EQUIV="refresh" content="0;URL=http://tuoitretrungoai.com/trang-khac/">

Chú ý: Kỹ thuật này thường bị spammers lạm dụng để đánh lừa máy tìm kiếm. Vì vậy bạn nên tránh sử dụng kỹ thuật này, trừ phi trang của bạn nằm trong vùng mà bọ tìm kiếm kiếm bị chặn hoặc không tiếp cận để đánh chỉ số được. Các spammer máy tìm kiếm thường tạo một trang tối ưu với rất nhiều từ khóa và cấu được gắn với sản phẩm và dịch vụ cần quảng bá nhưng thật ra thì không có giá trị nội dung thật sự. Sau đó trang này được đăng ký trên các máy tìm kiếm, nhưng khi người sử dụng nhắp chọn thì sẽ bị chuyển hướng tới trang khác, thường là không có gì liên quan tới chủ đề trang đang hiển thị. Đây là một kỹ thuật đã trở nên khá thô sơ và dễ dàng bị các máy tìm kiếm phát hiện và áp dụng các hình thức phạt.

Giải pháp đúng?

Trên đây chỉ là ví dụ về 2 giải pháp khá phổ biến, tùy thuộc vào ngôn ngữ, host ( lưu trữ website) bạn dùng hay phần mềm CMS chẳng hạn mà bạn có thể chọn lựa các giải pháp khác.

Tuy nhiên một trong những phương pháp hiệu quả nhất và được khuyến khích bởi các máy tìm kiếm trong đó có Google là sử dụng Redirection 301 thông qua .htaccess đối với các web site sử dụng máy chủ Apache (hãy kiểm tra xem máy chủ của bạn có hỗ trợ htaccess hay không tại bài viết sau phần kiểm tra htaccess trên máy chủ). Việc sử dụng htaccess không hề khó khăn và nó sẽ không gây ảnh hưởng xấu tới thứ hạng các trang liên quan. Nếu như bạn phải thay đổi tên hay chuyển các trang, thay đổi đường dẫn URL, thì đây là giải pháp an toàn nhất: Sử dụng htaccess.

Giới thiệu htaccess và redirect 301

Tệp tin htaccess là gì?

.htaccess là một tệp tin cấu hình đặc biệt, htaccess cho phép bạn thay đổi cách hoạt động của máy chủ Apache ở tầng thư mục. Tệp tin .htaccess gồm các dòng lệnh, có thể tùy biến theo người dùng, được đặt trong một thư mục nào đó, nó sẽ có tác dụng cho thư mục đó và tất cả các thư mục con. Một trong những ứng dụng phổ biến của htaccess là cho phép viết lại đường dẫn URL (rewrite URL).

Trở lại ứng dụng SEO của htaccess, khi một khách hay bọ tìm kiếm thăm một trang web, máy chủ sẽ kiểm tra tệp tin đặt biệt để tìm các tùy biến của webmaster, bao gồm cả các tùy biến bảo mật. Máy chủ sau đó sẽ thực thi các lệnh tìm thấy trong tệp tin htaccess thường gồm chuyển hướng redirection, bảo mật và báo lỗi.

Redirect 301 là gì?

Chuyển hướng redirect 301 hay redirection 301 thường được hiểu như việc di rời vĩnh viễn (moved permanently). Nó trả về mã lỗi 301 trong phần header nhằm thông báo cho máy tìm kiếm hay trình duyệt, máy chủ rằng trang web hiện tại đã được chuyển rời tới địa chỉ mới.

Cài đặt redirect 301

Điều đầu tiên là bạn phải đảm bào chắc server Apache của bạn hỗ trợ mod_rewrite cho phép sử dụng .htaccess để áp dụng redirect 301 (xem phần trên). Sau đó bạn phải tải tệp tin .htaccess từ thư mục gốc chứa các trang web của bạn. Nếu như bạn không có tệp tin .htaccess trong thư mục gốc thì bạn phải tạo nó với trình soạn thảo text như Notepad, Ultraedit hay EditPadPro, v.v. Phải chắc chắn rằng bạn viết đúng tên và có dấu chấm "." đầu tệp tin. Người sử dụng Windows sẽ không thể tạo được tệp tin .htaccess vì tệp tin đặc biệt này không chứa tên, nó chỉ chứa tên của phần tên mở rộng. Vì thế bạn hãy tải tệp tin text bất kỳ trong window rồi tải lên server qua FTP rồi đổi tên trên sever. Sau khi tải tệp tin .htaccess xuống máy, nếu đã có các dòng lệnh trước đó thì hãy cẩn thận đừng thay đổi nếu như bạn không chắc, tốt nhất hãy sao lưu một bản để phòng trường hợp cần thiết bạn vẫn có thể quay trở lại.

Cài đặt cơ bản

Dòng lệnh bắt đầu .htaccess

Dòng lệnh .htaccess của bạn nên bắt đầu như sau:

Options +FollowSymLinks
RewriteEngine o­n
RewriteBase /

Dòng lệnh cơ bản redirect 301

Dòng lệnh redirect 301 về cơ bản có dạng như sau trong tệp tin .htaccess:

redirect 301 /old/old.htm
http://tuoitretrungoai.com/f@rum/forum.php

Dòng lệnh trên thông báo chuyển rời tệp tin old.htm trong thư mục old đến vị trí mới tại: http://tuoitretrungoai.com/f@rum
.

Chú ý: Để bắt đầu thì bạn nên redirect 301 các trang trên cũng host, bạn chỉ nên chuyển các trang cũ đến thư mục gốc tương đối. Có thể thực hiện việc này bằng việc loại bỏ "http://www.ticsoft.com/" mà chỉ thêm đường dẫn tương đối đến thư mục gốc. Điểm mạnh nhât của việc thay đổi hàng loạt đường dẫn URL chính là mod_rewrite của Apache, đặc biệt là khi thay đổi tên miền hay thư mục
hay số lượng lớn các tập tin.

Chuyển toàn bộ đến tên miền mới

Nếu bạn quyết định thay đổi tên miền thì các đường dẫn trước đây từ các website bên ngoài, từ máy tìm kiếm và ngay cả các đường dẫn tuyệt đối trên website cũ đều bị thay đổi và khi bạn truy cập, các địa chỉ trên sẽ trỏ bạn đến trang báo lỗi 404 : trang không tìm thấy. Vì thế nếu bạn thay đổi tên miền thì đừng để mất các liên kết quí báu và người dùng tiềm năng từ máy tìm kiếm, hãy redirect các liên kết cũ tới tên miền mới:

Options +FollowSymLinks
RewriteEngine o­n
RewriteRule (.*)
http://dichvuso.vn/$1 [R=301,L]

Hãy thay đổi
http://dichvuso.vn bằng tên miền mới của bạn.

Redirect toàn bộ trang trong một thư mục đến một trang mới

Giả sử như bạn không còn sử dụng thư mục "website" nữa và muốn chuyển tất cả các trang trong thư mục này đến trang "news.php" thì hãy thêm dòng lệnh sau vào tệp tin .htaccess nằm tại thư mục gốc:

RewriteRule ^website(.*)$ /news.php [L,R=301]

Chuyển các trang động tới một trang mới

Để chuyến trang web động page.php?id=n (với n là giá trị biến) tới một trang tĩnh mới new-page.html thì bạn có thể làm như sau:

RewriteRule ^page.php?id=(.*)$ /new-page.htm [L,R=301]

URL với www hay không www

Đôi khi các bạn bắt gặp việc website sử dụng "www" trong URL (Ví dụ như http://dichvuso.vn
), trong khi có những website lại không dùng "www" này. Nên nhớ rằng "tương ứng" với dịch vụ Web. Các bạn có thể lựa chọn riêng cho mình. Nhưng không thể chọn cả hai vì sẽ gây ra trùng lặp nội dung. Tham khảo ví dụ sau:

- Trường hợp sử dụng www

Options +FollowSymLinks
RewriteEngine o­n
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.ticsoft.\.com$ [NC]
RewriteRule ^(.*)$
http://dichvuso.vn/$1 [R=301,L]

Ngoài ra còn có cách viết sau có thể áp dụng cho tất cả các host và domain, không phải edit lại:

Options +FollowSymLinks
RewriteEngine o­n
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.[a-z-]+\.[a-z]{2,6} [NC]
RewriteCond %{HTTP_HOST} ([a-z-]+\.[a-z]{2,6})$     [NC]
RewriteRule ^/(.*)$
http://%1/$1 [R=301,L]

- Trường hợp không sử dụng www

Options +FollowSymLinks
RewriteEngine o­n
RewriteBase /
RewriteCond %{HTTP_HOST} !^ticsoft\.com$ [NC]
RewriteRule ^(.*)$
http://tuoitretrungoai.com/$1 [R=301,L]

Bạn có thể thử lại với các tên miền ví dụ trên mà tớ áp dụng thành công đúng như trích dẫn.

Loại bỏ Query_String

Đôi khi một trang web của bạn có thể hiển thị hai đường dẫn url khác nhưng (cùng một nội dung) ví dụ seo-tools.php và seo-tools.php?v=mobile. Tương tự như phần trên, điều này sẽ tạp ra nội dung trùng lặp trên website của bạn. Vì vậy bạn có thể loại bỏ các tham biến như sau:

RewriteCond %{THE_REQUEST} ^GET\ /.*\;.*\ HTTP/
RewriteCond %{QUERY_STRING} !^$
RewriteRule .*
http://tuoitretrungoai.com%{REQUEST_URI}? [R=301,L]

Ngoài ra nếu như tham biến QUERY_STRING không được gấn giá trị nào hết và URl kết thúc bởi biến rỗng "?", thì bạn nên loại bỏ chúng, ví dụ "index.php?":

RewriteEngine o­n
RewriteBase /
RewriteCond %{QUERY_STRING} .
RewriteRule ^index.php /index.php? [L]

Chuyển phần đuôi mở rộng từ .php sang .html

Việc chuyển .php sang .html có tác dụng khi bạn cần viết lại đường dẫn thân thiện với máy tìm kiếm (Friendly URL for SEO).

RewriteRule ^(.*)\.html$ $1.php [R=301,L]

Chuyển gạch dưới (_) thành gạch ngang(-)

Dù Google mới chấp nhận việc sử dụng gạch dưới "_" như là ký tự ngăn cách, nhưng trong thực tế người dùng vẫn quen thuộc với dấu gạch ngang "-". Chúng tôi cũng ủng hộ dấu gạch ngang vì nó dễ nhìn hơn. Bạn có thể chuyển đổi toàn bộ dấu "_" sang "-" như sau:

Options +FollowSymLinks
RewriteEngine o­n
RewriteBase /

RewriteRule !\.(html|php)$ - [S=4]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes]
RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=uscor:Yes]

RewriteCond %{ENV:uscor} ^Yes$
RewriteRule (.*)
http://tuoitretrungoai.com/$1 [R=301,L]

Redirect Wordpress Feeds tới Feedburner

Trong bài viết sử dụng Feedbuner, các bạn có thể sử dụng plugin để quản lý Feeds RSS trên Blog Wordpress. Nếu không các bạn có thể sử dụng code .htaccess sau:

RewriteEngine o­n
RewriteBase /
RewriteCond %{REQUEST_URI} ^/feed\.gif$
RewriteRule .* - [L]


RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]
RewriteRule ^feed/?.*$
http://feeds.dichvuso.vn/page/thiet-ke-website.html [L,R=302]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Đối với người dùng WordPress, các bạn có thể sử dụng plug-in Redirection Permanent Link để chuyến hướng các trang.

Bào vệ ăn cắp tài nguyên và băng thông

Đôi khi các tài liệu, film hay hình ảnh mà bạn tải trên host của mình bị người khác dùng và đăng trên website khác sẽ gây tốn băng thông, bạn có thể hạn chế việc ăn cắp bằng cách chỉ cho phép các tài nguyên trên tiếp cận trên những website bạn cho phép như sau (Nếu không sẽ trả về thư mục /feed/):

RewriteEngine o­n
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?dichvuso.vn/.*$ [NC]
RewriteRule \.(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

Ứng dụng redirect 301 trên các máy chủ khác (ngoài Apache)

IIS redirect

Trong phần quản trị dịch vụ internet, nhấn phải chuột chọn tệp tin và thư mục mà bạn muốn áp dụng redirect:

Chọn nút "a redirection to a URL";
Chọn trang Redirection;
Chon tiếp "The exact url entered above" và "A permanent redirection for this resource";
Chon "Apply".

ColdFusion Redirect

<.cfheader statuscode="301" statustext="Moved permanently">
<.cfheader name="Location" value="
http://dichvuso.vn">

PHP Redirect

Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location:
http://dichvuso.vn" );

ASP .NET Redirect

< script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","
http://dichvuso.vn");
}
< /script>

Xem tiếp

Bản gốc: Thiết kế website - Tìm hiểu cơ bản về .htaccess và redirect 301

Không có nhận xét nào:

Đăng nhận xét