This web page requires JavaScript to be enabled.

JavaScript is an object-oriented computer programming language commonly used to create interactive effects within web browsers.

How to enable JavaScript?

Sử dụng .htaccess cơ bản

10cth1-2 March 28, 2012 1

.htaccess là tên ngầm định của một file cấu hình chứa các “chỉ dẫn máy chủ” – những dòng lệnh có thể hiểu và biên dịch bởi máy chủ – nhằm điểu khiển cách thức hoạt động của máy chủ. File có bắt đầu bằng dấu . sẽ là file ẩn trong các mãy chủ Linux

Một trong những ứng dụng phổ biến của tệp tin htaccess ở tầng thư mục là để giới hạn quyền truy cập của các tệp tin hay các thư mục qua Internet hay Intranet. Nó cũng có thể ứng dụng trong việc viết lại đường dẫn, thay đổi tiêu đề HTTP, các lỗi HTTP và rất nhiều ứng dụng khác.

Trong việc quảng bá Web, thường dùng htaccess để viết lại từ đường dẫn URL động (với các tham số) sang URL tĩnh, thân thiện hơn với công cụ tìm kiếm. Nó cũng giúp loại bỏ nội dung kép khi chuyển tiếp trang, hoặc domain. Ngoài ra, tớ còn tùy biến các lỗi 404, 500 .. thân thiện với người dùng hơn. Không thể bỏ qua bảo mật cho Website bằng việc hạn chế quyền truy cập tập tin và thư mục cũng như cấm truy cập một số địa chỉ IP hay UserAgent với tính chất spam hay phá hoại. Nói chung có rất nhiều tùy biến mà bạn nên đầu tư để nắm rõ.

File .htaccess hầu hết được dùng để đặt mật khẩu cho web site của bạn. ví dụ. nếu tôi muốn dùng mật khẩu để bảo vệ site http://domain.com/secrect/ Tôi có thể tạo một file gọi là .htaccess trong folder secret nằm trên server đó. Ngoài ra file .htaccess còn dùng để từ chối việc liệt kê file trong folder. Điều này rất tiện khi bạn không có file index ví dụ. images/ cgi-bin/ db/ .

Có rất nhiều tùy chọn cho bạn đặt vào file .htaccess. Ở đây tôi chỉ đề cập đến ‘AuthConfig’ và ‘Limit’.

QUAN TRỌNG: File .htaccess hoạt động trong toàn bộ cây thư mục. Ví dụ. nếu bạn có một file .htaccess trong /www/.htaccess thì nó sẽ có tác dụng đến /www/public/, /www/pictures, v.v.. Nếu bạn chỉ muốn không cho liệt kê thư mục trong /www/pictures thì đặt file .htaccess vào /www/pictures chứ KHÔNG phải vào /www !
Có một tùy chọn khác với thẻ nhưng tôi sẽ không đề cập trong bài này . Bạn có thể dùng google nếu muốn tìm hiểu kỹ hơn.

Đặt mật khẩu bảo vệ truy xuất trên máy chủ:

Việc đầu tiên là phải tạo một file gọi là .htpasswd để chứa usernamemật khẩu (đừng lo lắng gì, chúng đã được mã hóa). Có nhiều cách tạo mật khẩu mã hóa. Cách dễ nhất là vào http://www.euronet.nl/~arnow/htpasswd/ tạo một cái. Sau đó bạn copy/paste dòng kết quả vào file .htpasswd. Tiếp theo ta tạo file .htaccess. Ví dụ như sau:

AuthUserFile /home/your directory/.htpasswd
AuthGroupFile /dev/null
AuthName “My .htaccess secured web page!”
AuthType Basic
require valid-user

/home/your directory/.htpasswd là đường dẫn đến file .htpasswd đặt pass của bạn. Để lấy đường dẫn này, thường trong cpanel có để đường dẫn đến thư mục gốc (ở đây gọi chung là your directory) của web của bạn.
Xem tài liệu hướng dẫn thêm tại đây.

Cấm/hạn chế IP truy nhập

Nếu bạn muốn cấm (block) vài ip hay isp thì đặt một trong những dòng sau vào file .htaccess:

order allow,deny
deny from 123.45.67.89
deny from 45.67.89.
allow from all

Nó sẽ cấm 123.45.67.89 và mọi ip bắt đầu với 45.67.89. Bên cạnh đó bạn cũng có thể làm như sau:

order deny,allow
deny from all
allow from 123.45.67.8

Nó sẽ cấm tất cả IP ngoại trừ 123.45.67.8

Một số người muốn làm ngập (flood) trang web của bạn, việc cần làm là ngăn cấm những IP của những người này truy nhập vào trang web, bạn thêm đoạn mã sau vào .htaccess: deny from 203.262.110.20; cho phép IP truy nhập: allow from 203.262.110.20.

Nếu bạn chỉ viết IP dưới dạng: 203.262.110 thì sẽ cấm tất cả IP trong dải từ 203.262.110.1 đến 203.262.110.254.

Sử dụng dòng lệnh sau: Deny from all sẽ cấm tất cả mọi truy nhập đến các trang web trong thư mục, tuy nhiên các tập tin trong đó vẫn có thể được sử dụng từ bên ngoài thông qua các lệnh dạng require hay include (trong lập trình PHP), có thể xem thêm mã nguồn của PHPBB forum,IBF… để hiểu rõ hơn.

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 hoặc default.htm trả kết quả về cho trình duyệt, bạn có thể dùng .htaccess thay đổi mặc định này.

DirectoryIndex index.php index .php3 messagebrd.pl index.html index.htm

Tuỳ biến đuôi tập tin

Thông thường, tuỳ thuộc vào ngôn ngữ lập trình web mà bạn sử dụng tập tin sẽ có phần mở rộng khác nhau như: html, htm, asp, aspx, php, cgi, …Tuy nhiên nếu sử dụng .htaccess bạn có thể tác động vào máy chủ Apache, Apache sẽ gọi đến tập tin của bạn và trả về cho trình duyệt web của người dùng với phần mở rộng do bạn quy định trong .htaccess. Bạn sử dụng đoạn lệnh sau trong tập tin .htaccess:

RewriteEngine on
RewriteRule (.*)\.dll$ $1.html

Tạo đường dẫn ảo

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^.*$ – [L]
RewriteRule ^(.*)$ rewrite.php [L]

Nội dung file rewrite.php:

if(!$_SERVER['QUERY_STRING']){
$url=strip_tags($_SERVER['REQUEST_URI']);
$url_arr=explode("/",$url);
array_shift($url_arr); // bo cell đầu null
  
$page="";$query="";
/*Lay phan duong dan va ten file include*/
for($i=0;$i<count($url_arr)-1;$i++)
  $page.=$url_arr[$i]."/";
if($page=="") $page="home.php";
else
  $page=substr($page,0,strlen($page)-1).".php";

if(!file_exists($page)){
  echo "Invalid filename…";exit;
}
    
/*Lay phan querystring dang var1_var2_var3.vec*/
$query=substr($url_arr[$i],0,strlen($url_arr[$i])-4); // cat bo chu .htm cuối cùng của chuỗi URL
$var_arr=explode("_",$query,10);
$var1=@$var_arr[0];
$var2=@$var_arr[1];
$var3=@$var_arr[2];
                // ban gan cac giá trị query string vào từng biến

include($page);
}
else{
header("Location:".$_SERVER['REQUEST_URI']);
}
?>

– Chuỗi URL đưa vào có dạng: http://yourdomain.com/thư/mục/chứa/file/tên file.php/var1_var2_var3.htm
– Nếu không sử dụng các var1, var2,… thì bạn cho đại một tên nào đó ví dụ như show.htm chẳng hạn.

ví dụ: bình thường nếu truy cập: http://domain.net/products/list.php?cat=adgf&sort=fall
thì rewrite lại như sau: http://domain.net/product/list/adgf_fall.htm

Redirect 404 – chuyển về 1 địa chỉ mới:

Bạn có thể đặt .htaccess ở bất kì thư mục nào (vd http://localhost:8080/home/abc), khi truy cập đến nó sẽ trả về thư mục gốc http://localhost:8080/home ứng với ví dụ sau:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://localhost:8080/home [R=301,L]

Nếu bạn bạn đã chuyển web đến web mới mà người dùng vào web cũ sẽ dẫn họ đến bài viết tương ứng ở web mới thì dùng lệnh:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://localhost:8080/home/$1 [R=301,L]

Để 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://www.vietseo.net), 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

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

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^aevn\.fr$ [NC]
RewriteRule ^(.*)$ http://aevn.fr/$1 [R=301,L]

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://www.vietseo.net%{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 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).

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

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 On
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?vietseo.net/.*$ [NC]
RewriteRule \.(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

[i]Xem thêm ở:
http://cooletips.de/htaccess/index.php
http://www.htaccesstools.com/
http://www.ezuca.com/how-to-improve-security-protection-website-htaccess/
http://net.tutsplus.com/tutori…e-to-htaccess-files/
[/i]


Last modified on December 4th, 2020 at 11:51 pm

Nam Le
lequocnam



One respond

  1. none says:

    Excellent post. I was checking continuously this blog and I am
    impressed! Extremely useful information particularly the last part
    🙂 I care for such info much. I was looking for this particular info for
    a very long time. Thank you and good luck.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.