.htaccess là gì? Cách sử dụng .htaccess

Thảo luận trong 'Htaccess - URL Rewrite' bắt đầu bởi administrator, 13/2/13.

  1. administrator
    Administrator
    Thành viên BQT Admin Smod Mod

    Tham gia ngày:
    6/2/13
    Bạn đã bao giờ nghe nói đến .htaccess chưa? Bạn có biết cách sử dụng .htaccess chứ? Vâng, bài viết này mình sẽ hướng dẫn các bạn toàn tập file này.

    .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).

    DÒNG LỆNH BẮT ĐẦU .HTACCESS

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

    Mã:
    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 :

    redirect 301 /old/old.htm www.vnseo.edu.vn .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://www.seovietnam.org/new.htm.
    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.seovietnam.org/” 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 :

    Mã:
    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule (.*) http://www.www.vnseo.edu.vn/$1 [R=301,L]

    Hãy thay đổi www.vnseo.edu.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 “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 :


    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 :


    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ư www.vnseo.edu.vn), trong khi có những website lại không dùng “www” này như www.vnseo.edu.vn. 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 ratrù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

    Mã:
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} !^www\.seovietnam.\.org$ [NC]
    RewriteRule ^(.*)$ www.vnseo.edu.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 :

    Mã:
    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


    Mã:
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} !^aevn\.fr$ [NC]
    RewriteRule ^(.*)$ http://aevn.fr/$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.phpvà 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 :



    Mã:
    RewriteCond %{THE_REQUEST} ^GET\ /.*\;.*\ HTTP/
    RewriteCond %{QUERY_STRING} !^$
    RewriteRule .* http://www.seovietnam.org%{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?” :
    Mã:
    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).




    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 :


    Mã:
    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 :



    Mã:
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^/feed\.gif$
    RewriteRule .* - [L]
    
    RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]
    RewriteRule ^feed/?.*$ http://feeds.seovietnam.org/quangbaweb/ [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/) :



    Mã:
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?seovietnam.org/.*$ [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




    ColdFusion Redirect


    Mã:
    <.cfheader statuscode="301" statustext="Moved permanently">
    <.cfheader name="Location" value="http://www.seovietnam.org">



    PHP Redirect


    Mã:
    <?
    Header( "HTTP/1.1 301 Moved Permanently" );
    Header( "Location: http://www.seovietnam.org" );
    ?>


    ASP Redirec


    Mã:
    <%@ Language=VBScript %>
    <%
    Response.Status="301 Moved Permanently"
    Response.AddHeader "Location","http://www.seovietnam.org/"
    %>



    ASP .net Redirect


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


    JSP (Java) Redirect


    Mã:
    <%
    response.setStatus(301);
    response.setHeader( "Location", "http://www.seovietnam.org/" );
    response.setHeader( "Connection", "close" );
    %>


    CGI PERL Redirect


    Mã:
    $q = new CGI;
    print $q->redirect("http://www.seovietnam.org/");


    Ruby on Rails Redirect


    Mã:
    def old_action
    headers["Status"] = "301 Moved Permanently"
    redirect_to "http://www.seovietnam.org/"
    end
     
    #1
    mrseo thích bài này.
  2. congdong37 Hồ Quang Hiển Member

    Tham gia ngày:
    18/7/13
    Bác nào có 1 file htaccess chuẩn cho VBB không cho em với. Tại em mù code nên mới xin. Nếu có gì không phải thì mong mọi người bỏ qua cho em.
     
    #2
  3. Seo PageRank 1 Member

    Tham gia ngày:
    5/8/13
    Đúng rùi gửi 1 file chuẩn của htaccess lên đi chủ thớt.
     
    #3
  4. Seo PageRank 1 Member

    Tham gia ngày:
    5/8/13
    Chứ kiểu này nói anh em cũng khó hiểu lắm bởi mình cũng chưa được chủ website nào nói là thiết kế cho một file .htaccess hết
     
    #4
  5. datdathcmutrans PageRank 1 Member

    Tham gia ngày:
    7/4/14
    Làm video chi tiết luôn ad ơi...cho dễ hiểu !
     
    #5
  6. Thiết bị điện thông minh PageRank 1 Member

    Tham gia ngày:
    16/12/14
    Bác cứ tham khảo mấy cái file .htaccess của các CSM có sẵn ý joomla là một ví dụ này. nó có đủ rồi đó
     
    #6
  7. vuongseotop PageRank 0 Member

    Tham gia ngày:
    16/1/15
    Cám ơn bạn đã chia sẻ mình sẻ cố gắn khắc phục tại mình code bằng worpress nên không hiểu .htaccess cho lắm.
     
    #7

Chia sẻ trang này