Kenh giai tri, tin tuc giai tri,

Tổng hợp các lệnh File .htaccess và redirect 301 - Công dụng của chúng


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 . 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 :
Code:
Options +FollowSymLinks  RewriteEngine On 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 :
Code:
redirect 301 /old/old.htm http://KhoaPro.com/up/index.html
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://KhoaPro.com/up/index.html

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://KhoaPro.com/up/ 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. Chúng ta hãy tìm hiểu phần tiếp theo.

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 :
Code:
Options +FollowSymLinks RewriteEngine on RewriteRule (.*) http://KhoaPro.com/$1 [R=301,L]
Hãy thay đổi http://KhoaPro.com/ 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 “thuthuatseo” nữa và muốn chuyển tất cả các trang trong thư mục này đến trang “seoblog.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 :

Code:
RewriteRule ^thuthuatseo(.*)$ /seoblog.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 :
Code:
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://www.KhoaPro.com/ ), trong khi có những website lại không dùng “www” này như http://aevn.fr. 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. sau đây là hai ví dụ, hướng dẫn bạn sủ lý triệt để vấn đề này.

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

Code:
Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^www\.KhoaPro.\.com$ [NC] RewriteRule ^(.*)$ http://KhoaPro.com/$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 :
Code:
Options +FollowSymLinks RewriteEngine On 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

Code:
Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^KhoaPro\.com$ [NC] RewriteRule ^(.*)$ http://KhoaPro.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 :
Code:
RewriteCond %{THE_REQUEST} ^GET\ /.*\;.*\ HTTP/ RewriteCond %{QUERY_STRING} !^$ RewriteRule .* http://KhoaPro.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?” :
Code:
RewriteEngine On 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).
Code:
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 “-”. Bản thân seovietnam 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 :
Code:
Options +FollowSymLinks RewriteEngine On 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://www.seovietnam.org/$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 :
Code:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^/feed\.gif$ RewriteRule .* - [L]  RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC] RewriteRule ^feed/?.*$ http://KhoaPro.com/up/ [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/) :
Code:
RewriteEngine On RewriteBase / RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?KhoaPro.com/.*$ [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;
Chon 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

Code:
<.cfheader statuscode="301" statustext="Moved permanently"> <.cfheader name="Location" value="http://KhoaPro.com">
PHP Redirect

Code:
ASP Redirec

Code:
<%@ Language=VBScript %> <% Response.Status="301 Moved Permanently" Response.AddHeader "Location","http://KhoaPro.com/" %>
ASP .net Redirect

Code:
JSP (Java) Redirect

Code:
<% response.setStatus(301); response.setHeader( "Location", "http://KhoaPro.com/" ); response.setHeader( "Connection", "close" ); %>
CGI PERL Redirect

Code:
$q = new CGI; print $q->redirect("http://KhoaPro.com/");
Ruby on Rails Redirect

Code:
def old_action headers["Status"] = "301 Moved Permanently" redirect_to "http://KhoaPro.com/" end





Tiếp nè các bác

Bằng việc khai thác tập tin cấu hình .htaccess trên Apache server, bạn có thể thực hiện được rất nhiều việc khác nhau như cấu hình lại file error, viết lại url, ... dưới đây là một số thủ thuật nữa mà bạn có thể sử dụng với .htaccess

1. Chống hotlink:
Hotlink nghĩa là một tập tin của ta được đọc trực tiếp từ trang khác. Thí dụ: bạn có một ảnh JPEG rất đẹp 200KB ở máy chủ của bạn, nhưng người khác lại dùng thẻ để hiển thị hình ảnh này ở trang web của họ. Đây là hành vi ăn cắp băng thông của bạn, vì mọi người xem không ai biêt rằng cái ảnh đó của bạn, và bạn đã mất băng thông một cách vô ích.
Rất may, hầu hết các trình duyệt khi yêu cầu một tập tin đều có gửi kèm một thông số cho biết nó được yêu cầu từ trang web nào. Vậy bạn chỉ cần đơn giản một câu kiểm tra là xong.

Code:
RewriteEngine on     RewriteCond %{HTTP_REFERER} !^$     RewriteCond %{HTTP_REFERER} !^http://(www\.)?yoursite\.com.*$ [NC]     RewriteCond %{HTTP_REFERER} !^http://your-ip.*$ [NC]     RewriteRule .*\.(jpg|gif)$ http://www.yoursite.com/hotlink.jpg [NC]
Trong đó hotlink.jpg là ảnh sẽ thay thể các ảnh kia (bạn có thể ghi một câu thông báo chẳng hạn vào tấm ảnh đó). Và tất cả ảnh được link đến từ trang khác sẽ không hiện ra, mà được thay bằng ảnh hotlink.jpg. Tất nhiên, bạn có thể sửa lại để ngăn các tập tin khác ngoài GIF và JPG.

Đôi khi, bạn muốn chống hotlink trong thư mục gallery thôi chẳng hạn, thì dòng cuối cần sửa lại thành:

Code:
RewriteRule .*gallery.*\.(jpg|gif)$ http://www.yoursite.com/hotlink.jpg [NC]
2. Trang báo lỗi:

1.Tạo trang báo lỗi mang màu sắc cá nhân
-Trong quá trình làm việc với client nếu có lỗi xảy ra (ví dụ như không tìm thấy tập tin) thì Apache sẽ báo lỗi bằng một trang có sẵn hiển thị mã số của lỗi đó rất không đẹp và khó hiểu.
-Với .haccess thì bạn có thể tự tạo các trang báo lỗi hay hơn. Để làm được điều này thì trong tập tin .htaccess bạn thêm dòng sau:
ErrorDocument mã số lỗi /trangloi.html
Trong đó ErrorDocument là Câu lệnh của tệp tin ( ko được thay đổi) mã số lỗi là một số tự nhiên : trangloi.html là trang web mà bạn muốn hiển thị khi lỗi phát sinh có thể đưa vào tập tin này nội dung hay đồ hoạ gì tùy bạn chẳng hạn liên kết trở về trang chính của trang web
Các mã số lỗi hay gặp là :
401 – Authorization Required (cần password để truy nhập)
400 – Bad request (Lỗi do yêu cầu)
403 – Forbidden (không được vào)
500 – Internal Server Error (lỗi server)
404 – Wrong page (lỗi trang* không tìm thấy…)
VD: Ta có câu lệnh sau trong .htaccess:
ErrorDocument 404/loi404.html
Khi bị dính lỗi này : Trình duyệt sẽ tự động chuyển bạn đến trang loi.404.html nằm ngang hàng với tệp tin .htaccess

2. Bình thường, khi gặp lỗi, bạn sẽ nhận được một thông báo chán ngắn từ Apache. Tuy nhiên, với .htaccess bạn có thể tuỳ biến trang thông báo này. Thí dụ sau tạo thông báo lỗi tuỳ biến cho các lỗi 403 (cấm truy cập) và 404 (trang không tồn tại), trong đó nội dung file error_forbidden.htm và error_notfound.htm do bạn quyết định, ví dụ như đưa ra một form tìm kiếm nội dung trong trang, cấu hình lại đúng đối số trên trang vv...:

Code:
ErrorDocument 403 /error_forbidden.htm     ErrorDocument 404 /error_notfound.htm
3. Chọn trang web theo thời điểm:
Đoạn mã sau đây sẽ hiển thị trang sleep.htm nếu ai đó truy cập vào trang của bạn trong khoảng 1 đến 4 giờ sáng:

Code:
RewriteEngine on     RewriteCond %{TIME_HOUR}%{TIME_MIN} >0100     RewriteCond %{TIME_HOUR}%{TIME_MIN} <0400     RewriteRule ^.*$ http://www.yourdomain.com/sleep.htm
4. Nhắc nhở bật cookie:
Bạn bắt buộc người dùng phải chấp nhận cookie, và muốn kiểm tra cookie đã được thiết lập hay chưa. Rất đơn giản, đoạn sau sẽ thay tất cả các ảnh một một tấm ảnh kêu người dùng bất cookie (cookies/enable.gif là hình báo nhắc nhở bật cookie).

Code:
RewriteEngine on     RewriteCond %{HTTP_COOKIE} !^.*cookies=true.*$     RewriteRule .*[Jj][Pp][Gg]$|.*[Gg][Ii][Ff]$ /cookies/enable.gif
5. Chặn ip của ai đó:
Đôi khi bạn muốn giới hạn một trang nào đó chỉ cho phép 1 vài người truy cập (như khu vực Admin), hoặc cho tất cả trừ một vài người không được phép truy cập vào (ngăn những ip đang flood). Cả hai trường hợp này có thể giải quyết nhẹ nhàng nhờ .htaccess

5.1. Chỉ cho phép một số ip truy cập
Đầu tiên ta cấm tất cả, sau đó cho phép một số:

Code:
order deny,allow     deny from all     allow from 127.0.0.1     allow from 192.168.0.1
Chỉ cho phép ip 127.0.0.1 và 192.168.0.1 truy cập vào trang web (nếu bạn đặt .htaccess ở thư mục gốc). Để cấm thư mục admin, bạn đặt nó vào thư mục admin.

5.2. Cấm một số ip truy cập

Code:
order allow,deny    allow from all    deny from 203.113.135.6    deny from 203.162.*
Cấm ip 203.113.135.6 và tất cả các ip bắt đầu bằng 203.162

6. Thay thế trang index:
Thông thường khi truy nhập vào một trang web, Apache sẽ tìm tập tin index.htm(l) hoặc default.htm(l) trả kết quả về cho trình duyệt, bạn có thể dùng .htaccess thay đổi mặc định này.

Code:
DirectoryIndex index.php emyeu.htm index.html index.htm
Với dòng lệnh này thì tất cả các tập tin được liệt kê sẽ được tìm theo thứ tự (lần lượt là index.php, emyeu.htm, rồi đến index.html, index.htm) khi có yêu cầu tới thư mục hiện hành, trang nào được tìm thấy đầu tiên sẽ thành trang index của thư mục.
Trong trường hợp một thư mục nào đó không có tập tin index, Apache sẽ hiển thị một danh sách liệt kê những tập tin có trong thư mục đó. Tuy nhiên nếu đây là những tài liệu nhạy cảm, bạn không muốn cho liệt kê nội dung thì có thể làm bằng nhiều cách sau:
  1. Cách đầu tiên là đặt vào đó một tập tin index.html mặc định
  2. Cách khác là không cho hiện nội dung thư mục bằng .htaccess Mã lệnh : Options -Indexes
  3. Cách cuối cùng là đặt index mặc định nếu index.html không tìm thấy: Mã lệnh: DirectoryIndex index.php index.html index.htm /noindex.html
    Trong trường hợp này, bạn tạo tập tin /noindex.html, khi đó nếu Apache không tìm thấy index.*, nó sẽ đọc noindex.html ở thư mục gốc. Nghĩa là bạn luôn có tập tin index.
Chúc bạn thành công!

(Tổng hợp)

Tổng hợp các lệnh File .htaccess và redirect 301 - Công dụng của chúng Rating: 4.5 Diposkan Oleh: Unknown

1 nhận xét:

  1. You actually make it appear really easy along with your presentation however I to find this matter to be actually one thing that I believe
    I would by no means understand. It sort of feels too
    complicated and very huge for me. I am having a look forward on
    your subsequent submit, I'll attempt to get the hold of it!

    My weblog: frank ocean quotes

    Trả lờiXóa