Viết lại đường dẫn URL (mod_rewrite, .htaccess, Apache)
Viết lại đường dẫn URL với Mod_Rewrite của Apache. Cấu hình .htaccess cơ bản
Từ khóa: rewrite url, duongdan, đường dẫn, url, rewrite, mod_rewrite,apache,seo,toiuu,quangba,quangcao,timkiem
Tại sao phải viết lại đường dẫn
Tại sao phải “viết lại” đường dẫn và sử dụng đường dẫn ảo ? Câu trả lời thật rõ ràng: đường dẫn rõ ràng ngắn gọn bao nhiêu, thành viên nhớ được nhiều bấy nhiêu. Dù site của bạn có nội dung gì đi nữa, thì mục đích của bạn luôn là giữ được nhiều thành viên nhất có thể. Về điểm này, đường dẫn ảo sẽ là giải pháp hoàn hảo cho bạn.
Ngoài ra về phương diện SEO, một đường dẫn URL tĩnh có thể giúp cho Google index dễ dàng hơn. Thêm nữa trong khi viết lại đường dẫn bạn có thể thêm các từ khóa vào trong đường dẫn. Trang Web tĩnh lúc này sẽ có lợi thế trong kết quả tìm kiếm hơn là một trang Web động với nhiều thông số mà Google có thể không thể index được (Quá 3 thông số chẳng hạn
Kiểm tra cấu hình Apache
Trước khi bắt đầu tìm hiểu về việc tạo và sử dụng đường dẫn ảo, bạn phải chắc chắn rằng server Apache của bạn (trên máy bạn chạy localhost hoặc trên server của nơi cung cấp host) phải có module mod_rewrite và module này đã được cài cho Apache. Trên localhost, bạn có thể cài cho Apache bằng cách sửa file Conf/httpd.conf: tìm đến những dòng có rewrite_module và bỏ dấu # ở đầu đi.Nếu đã giải quyết được vấn đề trên, chúng ta cùng bắt đầu nhé.
Viết lại đường dẫn URL (mod_rewrite, .htaccess, Apache)
Đầu tiên, bạn tạo 1 file tên .htaccess với nội dung như code bên dưới nhé :
Ghi chú :
Trong Windows, bạn không thể tạo được file chỉ với phần đuôi mở rộng, vậy nên đặt tên là htaccess.txt rồi upload FTP lên server và đổi tên lại thành .htaccess.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Tôi sẽ giải thích những dòng code trên ở các bước tiếp theo.
- Dòng đầu tiên sử dụng để bật RewriteEngine.
- Hai dòng tiếp theo là điều kiện để sử dụng Rewrite.
- Chúng ta có thể chỉ dùng dòng đầu tiên và dòng cuối cùng trong 5 dòng mã trên. Tuy nhiên nếu chỉ có 2 dòng này, những đường dẫn tới thư mục và files thực sẽ ko sử dụng được. Đó là lý do chúng ta thêm vào 2 dòng số 2 và 3. Hai dòng này sẽ đặt điều kiện để server kiểm tra xem đường dẫn mà user sử dụng là có thật hay ko, trước khi xử lý nó như 1 đường dẫn ảo.
- -d và -s là 2 giá trị mẫu dành cho việc kiểm tra THƯ MỤC và FILE thực. Ta sử dụng thêm [OR] để kết hợp 2 điều kiện này lại.
- Dòng cuối cùng phụ thuộc vào quyết định của bạn, đường dẫn ảo sẽ được đặt ra sao.
Cú pháp sử dụng RewriteRule như sau:
RewriteRule Pattern Substitution
Với Pattern là định dạng của đường dẫn ảo sẽ được áp dụng cho đường dẫn thực tương ứng (Substitution).
Bạn có thể sử dụng nhiều định dạng cho những đường dẫn thực khác nhau.
Ví dụ:
RewriteRule ^tutorials/(.*)/(.*)$ /tutorials.php?id=$1&page=$2 [L]
sẽ chuyển /tutorial/X/Y (đường dẫn ảo) thành
/tutorial.php?id=X&page=Y (đường dẫn thực)
còn
RewriteRule ^download/(.*)$ /download.php?id=$1 [L] #sẽ chuyển /download/X thành /download.php?id=X.
Viết lại đường dẫn URL nâng cao
Trong hướng dẫn này, tôi giới thiệu với bạn 1 cách theo tôi là khả thi nhất để giảm số lần sửa đổi đối với file .htaccess: sử dụng duy nhất 1 file PHP để xử lý mọi trường hợp của đường dẫn ảo. Đây chính là cách mà tôi sử dụng cho site mà bạn có thể nhìn thấy tại dòng thứ 5 của đoạn mã trên. Tất cả các đường dẫn sẽ được chuyển tới file index.php và được xử lý tại đây.
Để xem chúng ta cần những gì trong file index.php nhé.
Trước hết bạn phải thiết kế 1 chuỗi truy vấn có thứ tự cố định.
Một ví dụ minh hoa: ko có sự khác biệt giữa 2 đường dẫn
index.php?view=tutorials&id=1&page=2
và
index.php?view=tutorials&page=2&id=1
nhưng khi user truy cập qua đường dẫn ảo, sẽ có khác biệt giữa
/tutorials/1/2 và /tutorials/2/1.
Đó là lý do tôi dùng cụm từ “chuỗi truy vấn có thứ tự cố định”.
Tiếp theo, giả sử bạn đã quyết định được 1 chuỗi truy vấn cho mình có thứ tự như sau: vị trí đầu tiên dành cho PHÂN MỤC, vị trí thứ hai cho ID, vị trí thứ 3 cho SỐ TRANG, …. Chúng ta sẽ xử lý đường dẫn ảo qua index.php như sau:
if(!$QUERY_STRING) {
// sử dụng điều kiện này để tiếp tục dùng
//đường dẫn kiểu truy vấn.
$url=strip_tags($REQUEST_URI);
$url_array=explode(”/”,$url);
// vì chúng ta sử dụng $REQUEST_URI nên $url_array luôn có giá trị đầu rỗng
// sử dụng array_shift() để cắt giá trị đầu tiên
array_shift($url_array);
// gán các giá trị tương ứng lấy từ đường dẫn ảo
$_REQUEST[´view´] = $url_array[0];
}
Tất cả chỉ cần có vậy để có tạo được đường dẫn ảo ngắn gọn và dễ nhớ cho site của bạn và nâgn cao khả năng cạnh tranh để có thứ hạng cao trên công cụ tìm kiếm.
Tham khảo và sửa đổi từ blog.vnseo.com.
Hoài Nam - http://www.vietseo.net
Bài viết cùng chủ đề liên quan
- Mod_Rewrite, tối ưu URL cơ bản
Viết lại đường dẫn URL qua mod_rewrite apache. Hướng dẫn chi tiết tiếng Việt. - htaccess - .htaccess - Thuật ngữ SEO Webmaster - Quảng bá Website
.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 máy chủ. - Xử lý dấu tiếng Việt - Link URL thân thiện SEO
Xử lý chuỗi ký tự có dấu tiếng Việt. Viết lại đường link thân thiện Friendly URL cho SEO. - Độ dài bài viết và mức độ thường xuyên viết bài
Phần 8 cuốn sách tiếng Việt \"Hướng dẫn kiếm tiền trên mảng của John Chow : Độ dài của bài viết và mức độ thường xuyên viết bài. - Thành phần của một đường dẫn URL - Static URL vs Dynamic URL
Định nghĩa các thành phần khác nhau của một đường dẫn URL. Sự khác nhau giữa đường dẫn tĩnh và động.
Bình luận của bạn

January 17th, 2008 at 6:48
Ban oi giup minh voi. Minh lam theo huong dan chua ban chay ok, nhung cac file css, sj, image deu bi sai. Giup minh nhe. Cam on nhieu
January 17th, 2008 at 16:30
Khi viết lại đường dẫn thì cac file include thường có thể không tìm thấy khi mà đường dẫn là tương đối (so với một thư mục, thư mục gốc chẳng hạn). Vì vậy có hai giải pháp:
-Sử dụng thẻ
< base href="...">trong file php cần chuyển (đặt tại phần header)- Thứ hi là sử dụng đường dẫn tuyệt đối cho file ảnh và CSS ví dụ thay vì dùng đường dẫn tương đối “./wp-content/themes/seoblog/style.css” thì mình dùng đường dẫn tuyệt đối “http://www.vietseo.net/wp-content/themes/seoblog/style.css”
Chúc bạn thành công.
January 31st, 2008 at 0:02
Bài viết này rất hay. Không hổ danh là vietseo lên google search với rất nhiều keyword liên quan đến seo đều dẫn tới vietseo ;).
Xin giải thích lại giùm mình đoạn này:
1. if(!$QUERY_STRING) { // sử dụng điều kiện này để tiếp tục dùng đường dẫn kiểu truy vấn.
2. $url=strip_tags($REQUEST_URI);
3. $url_array=explode(”/”,$url);
4. // vì chúng ta sử dụng $REQUEST_URI nên $url_array luôn có giá trị đầu rỗng
5. // sử dụng array_shift() để cắt giá trị đầu tiên
6. array_shift($url_array);
7. // gán các giá trị tương ứng lấy từ đường dẫn ảo
8. $_REQUEST[´view´] = $url_array[0];
9. }
Admin xin cho mình hỏi thêm làm sao để rewrite từ index.php?action=news&id=1 thành /tieu-de-bai-viet-mot.html vậy? Không lẽ phải query theo title của bài viết à? Tuong tu nhu WordPress /?id=1 thành /categories-mot/sub-categories-mot/tieu-de-bai-viet-mot/
Thanks!
March 20th, 2008 at 18:57
Rewrite URL cho WordPress
Nếu cậu dùng WordPress thì mọi việc rất đơn giản, WordPress hỗ trợ các các lựa chọn pemenant link. Cậu xem thêm bài viết Cấu hình Pemanent links. Bài viết khá chi tiết và đưa ra quan điểm riêng của vietSEO.
Phương pháp chung
Còn nhìn chung khi muốn viết lại đường dẫn thì có hai việc :
1)Chọn đường dẫn hợp lý:
- Phải đưa ra liên kết đã thân thiện hóa trong code, URL thân thiện phải chứa từ khóa và các tham số (ví dụ như cậu đưa ra là “news” và “1″) cũng như những từ khóa (thường là tớ lấy tiêu đề).
- Dùng htaccess hay PHP để trả lại kết quả trang tĩnh được viết lại này từ trang động ban đầu.
Ví dụ : Tớ viết lại đường dẫn bài viết “Sinh Viên Việt Nam - Học Sinh - Sinh Viên” có địa chỉ URL động ban đầu là _”http://aevn.fr/index.php?showtopic=2433″. Tớ quyết định lấy tên đường dẫn mới là :”http://aevn.fr/topic/sinh-vien-viet-nam-hoc-sinh-sinh-vien-t2433/”
Các bạn thấy :
- Thư mục “topic” để viết đó là bài viết (khác “forum” hay “member” …)
- Từ khóa là tiêu đề bài viết đã được xử lý dấu tiếng Việt
- Tham số id của bài viết t2433, t để ngăn cách, tránh trường hợp tiêu đề cũng kết thúc bằng một số (t=thread)
2)Thay đổi code và Server
- Tớ viết lại code của phần showforum hay portal, tóm lại là bất kể phần nào hiển thị liên kết tới bài viết này sao cho địa chỉ mới là địa chỉ URL đã được viết lại nói trên.
- Can thiệp vào htaccess hay code PHP để khi yêu cầu đường dẫn URL thân thiện thì server trả lại nội dung trang động ban đầu.
Tùy thuộc vào cấu trúc, phần mềm quản trị nội dung (CMS) của bạn mà dùng các phương pháp, MOD thích hợp cho việc thân thiện hóa đường dẫn.
Chúc các bạn thành công.
April 14th, 2008 at 10:10
Mình cài WAMPSERVER (Apache 2.2.8), đã bật mod_rewrite và tạo thử file .htaccess như trên nhưng chạy không được.
# .htaccess
RewriteEngine on
RewriteRule ^tutorials/(.*)/(.*)$ /tutorials.php?id=$1&page=$2 [L]
Vd: chạy http://localhost/test_rewrite/tutorials/a/2
thì nhận đc lỗi “The requested URL /web/knguyen/alice.htmla was not found on this server.”.
Xem phpinfo() thì thấy mod_rewrite đã load.
Hổng biết bị lỗi gì, nhờ vietseo chỉ giúp. Cảm ơn nhiều
April 14th, 2008 at 12:25
@mod_rewrite on Apache 2.2.8 : Cậu thử xem lại đường dẫn thư mục test_rewrite. Có hai cách :
- Cậu thử tut này bằng cách đặt .htaccess tại ngay thư mục gốc www của apache.
- Nếu dùng thư mục test_rewrite để thử thì cậu hãy đặt .htaccess trong thư mục này
Cậu hãy thử rewrite đơn giản không biến dạng như :
RewriteEngine on
RewriteRule ^vidu.php$ /vidu.html [L]
Trong đó file vidu.html là có thật.
Nếu mà vẫn không được thì tớ đang nghĩ đến file alice.html 404 not found của cậu, cậu trở đến file nào mà nó lại tìm đọc alice.html nhỉ ?
April 14th, 2008 at 22:42
Cảm ơn bạn!
Mình thử đưa trực tiếp vào directive của docroot (C:/…/htdocs) thì chạy được, nhưng để trong .htaccess thì không đc, 2 dòng rewrire như bạn nói:
RewriteEngine on
RewriteRule ^vidu.php$ /vidu.html [L]
Còn nữa, trên đây là thử với PHP 5.2.5 - còn với bản 4.4.2 thì hổng được (thử phpinfo() nó không thấy module mod_rewrite !??)
Khổ nỗi code theo kiểu PHP4 thì nhiều, giờ chuyển lên ver 5.x lại phải sửa nữa thì khốn, hic ;)).
April 14th, 2008 at 23:05
Nếu thư mục gốc được rồi thì bây giờ cậu luôn đặt .htaccess tại thư mục gốc, khi viết đường dẫn chứa các thư mục con thì cậu chỉ việc thêm tên các thư mục con này vào đường dẫn trích ra trong .htaccess tại thư mục gốc thôi.
Còn phiên bản PHP thì không bị ảnh hưởng, nếu có hay không thì cậu chú ý cái dấu / trong đường dẫn /vidu.html
Đôi khi nó là thế này :
RewriteEngine on
RewriteRule ^vidu.php$ vidu.html [L]
Cậu thử kiểm tra lại nhé.
Tóm lại là chỉ cần viết đúng htaccess thôi còn lại thì cậu đặt ở thư mục con vẫn phải hoạt động bình thường.
April 14th, 2008 at 23:23
Mình nói được ở đây là config trực tiếp thẻ trong httpd.conf á, chứ .htaccess thì không được (ở localhost), còn host thuê thì okie, nhưng chỉ để .htaccess ở www chứ sub dir cũng hổng được.
Thx
April 23rd, 2008 at 8:44
Có ai biết cách bật mod rewrite khi đang sử dụng virtual host không?
Mình đã làm nhiều cách mà vẫn không được, mong các bạn hướng dẫn dùm
April 29th, 2008 at 15:40
File .htaccess như thế này:
1. RewriteEngine on
2. RewriteCond %{REQUEST_FILENAME} -d [OR]
3. RewriteCond %{REQUEST_FILENAME} -s
4. RewriteRule ^.*$ - [L]
5. RewriteRule ^(.*)$ index.php [L]
đặt ngay public_html của server.
Có vẻ như dòng 2 và 3 không có hiệu lực, vì khi thử truy cập vào các thư mục hoặc file thực nhưng vẫn bị redirect lại index.php. Nếu xóa file .htaccess đi thì nhận được lỗi 404. Chỉ chạy được mỗi file index.php tại public_html.
Mình thử tại đây, admin fix giúp mình nhé:
http://khangnguyen.vn
file thực: http://khangnguyen.vn/images/search.gif
Thx
April 29th, 2008 at 18:04
@ihoapm : Bạn dùng dòng lệnh sau chuẩn hơn :
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Cái này chắc chắn phải OK, có thể thay index.php bằng thư mục khác nhé, hoặc có thể thay RewriteBase bằng các thư mục khác. Nhưng phải nhớ vị trí tương đối của mình ở đâu so với file .htaccess thực thi.
Chúc thành công.
April 29th, 2008 at 21:15
Vẫn thế bạn ạ!
Bạn thử vào “http://www.khangnguyen.vn/images/search.gif” sẽ output thế này:
“you ‘ve request: /images/search.gif” hoặc “you ‘ve request: xxx” với (xxx) là path sau khangnguyen.vn. (output của index.php á, tớ đang test í)
hix, chắc phải tiếp tục dùng url with params thôi, khổ quá… Host support thì bảo sang vietseo xem, sang đây cũng … tắc đường, khổ thân…
April 30th, 2008 at 2:43
Host support là nghĩa vụ của họ vì làm thương mại, chứ vietseo đâu có liên quan gì. Tớ chỉ khoái trao đổi, giúp đỡ được ai thì giúp thôi chứ có vụ lợi đâu. Nếu không thì đưa FTP tớ làm thử cho
May 2nd, 2008 at 17:59
Cậu thử vào 2 url trên í, tớ chịu chết á, “nó” chẳng chịu “nhúc nhích”, hix.
May 14th, 2008 at 13:15
cảm ơn admin về bài viết này,rất hay
theo như những gì admin nói ở trên thì rewrite kiểu gì thì trên url cũng phải có ID của “bài viết”
vd : localhost/Rewrite/topic/1234 (1234 là ma so cua bai viet)
nhưng tớ thấy tại viéteo.net thì trên url ko hề có ID đó mà chỉ toàn là từ khóa hc tiêu đề bài viết
vd: http://www.vietseo.net/webmaster/apache/rewrite-url-apache-htacess/
(ko hề có id trên url )
làm sao để làm đc như vậy
May 14th, 2008 at 14:45
Bạn hoàn toàn hiểu đúng về cách viết lại đường dẫn URL. Nếu như bạn để ý, trên các plate-form (Bulletin Boards : Vbulletin, Invision, phpBB hay CMS : Joomla) khi không tính đến Rewrite URL với Friendy URL (FURL) thì mình phải thêm ID đâu đó trong đường dẫn. (Ví dụ Trao đổi liên kết với AEVN, Phần mềm Karaoke)
Tuy nhiên mình nhắc lại là site của vietSEO dùng WordPress, và WP đã tính đến hết khả năng này, nên nó đã thêm một table chứa đường dẫn permalink (tớ chọn ở đây là FURL không chứa ID, giờ, ngày post, cậu xem thêm chọn permalinks WordPress).
Vấn đề khó khăn khi viết FURL là :
Vì vậy việc có thêm các ID hay ngày tháng, giờ post là điều thường thấy và là giải pháp cho các trang mà nội dung do người dùng xây dựng hay đóng góp và mỗi nội dung đó đều được tạo một URL tĩnh tương ứng.
May 19th, 2008 at 21:18
Hihi, cuối cùng thì cũng đã chuyển sang FURL xong, cảm ơn vietseo nhiều!!!
May 31st, 2008 at 8:53
admin cho tớ hỏi tí
+ tớ thấy nhacso.net có link như sau
http://nhacso.net/Music/Album/2008/05/05F669F5
05F669F5 có phải là ID của album ko ?
php có làm làm ID kiểu vừa số vừ chữ như thế đc ko
+ file .htaccess liệu có bị người khác down về ko (nếu họ biết đường dẫn)
tớ không muốn người khác biết đc cách Rewrite của tớ.
+ thêm một câu hỏi ngoài chủ đề :
admin có ebook nào nói về các Hàm trong php ko.
(^_^)
thank !
May 31st, 2008 at 9:03
a
admin cho em nich chat cái
để khi nào có gì thì hỏi cho tiện
May 31st, 2008 at 13:12
Chào NST,
Linh nhạc từ nhacso với ID cậu trích ra có thể liên quan tới ID của album. Tuy nhiên đây là ID đã được mã hóa. Có nhiều trang Web đã giải mã được và cho phép bạn có đường dẫn trực tiếp của tài nguyên nhacso. Tuy nhiên có nhiều trang nhạc sử dụng cơ sở dữ liệu (CSDL) để chứa đường dẫn trực tiếp nên nó chỉ hiện đường dẫn khi sau khi truy cập địa chỉ URL gián tiếp liên kết với URL trực tiếp của tài nguyên qua CSDL.
Bạn có thể sử dụng các website với các dịch vụ download hoặc trong bất kết trường hợp nào sử dụng các Download Helper dạng như Extension của FireFox hay các phần mềm sinpper Ethernet : URL Helper,Ethereal …
Quay trở lại chủ đề chính với câu hỏi thứ hai, thì file .htaccess theo ngầm định trên máy chủ Apacher được cấu hình chuẩn không cho phép người dùng hay nhóm người dùng public được quyền xem, sửa đổi nội dung. Vì thế tệp tin cấu hình .htaccess của cậu sẽ không thể bị download về được. Xin nhắc lại đây là tệp tin cấu hình máy chủ Apache cho phép tùy biến cấu hình và cách xử lý của máy chủ nên nó chứa rất nhiều thông tin và tùy chọn nhạy cảm nên không víible với public. Tương tự trong trường hợp cậu sử dụng tệp tin lưu mậtk hảu của người dùng hay nhóm người dùng .htapasswd thì nó cũng được set permission không cho phép xem và sửa nội dung đối với user là public.
Còn về các hàm php thì mình thường tra trên http://www.php.net còn không dùng ebook nào cả. Không biết đã có project dịch các hàm php ra tiếng Việt chưa ?
Cuối cùng, mình chỉ hỗ trợ các câu hỏi kỹ thuật qua Comment và trên Website vì như thế những người đến sau có thể tham khảo được câu hỏi và câu trả lời. Ngoài ra cũng có thể chuẩn bị nhiều hơn cho mỗi câu trả lời. Tăng chất lượng hỗ trợ thành viên trên toàn site.
Cám ơn bạn đã quan tâm.
June 2nd, 2008 at 11:01
hahahaaha
cai dia chi trang web cua ban hay lem do
ahahaahah
June 12th, 2008 at 13:45
Chào admin
cho mình hỏi
Mình có mở file httpd.conf ra nhưng không có dòng nào có mod_rewrite cả. Bên cạnh có file httpd.conf_AMPstart.bak, mở ra có thấy mod_rewrite mình xóa dấu # đi nhưng cũng không chạy được permalink. Bạn có thể giúp mình được không?
Chân thành cảm ơn!
June 15th, 2008 at 6:41
fiel httpd.conf_AMPstart.bak là tệp tin lưu, bản nháp thôi chứ không phải tệp tin hiệu lực.
Để kích hoạt mod này, bạn làm như sau :
Enable mod_rewrite
Để kiểm tra, thì hãy tạo file .htaccess tại thư mục nào đó kiểu “test” với nội dung như sau :
————
Options +FollowSymLinks
RewriteEngine On
————–
Giờ thì bạn hãy trỏ trình duyệt tới thư mục vừa đặt file .htaccess
(http://localhost/test/). Có hai khả năng xảy ra :
.
Chúc bạn thành công.
June 24th, 2008 at 17:07
admin cho hỏi 1 câu
tớ đang định dùng biến $QUERY_STRING; để lấy giá trị
nhưng tớ thấy đối với host Linux thì ko lấy đc $QUERY_STRING thì phải
vậy có cách nào khắc phục ko
June 24th, 2008 at 17:57
Đâu có, Apache của tớ chạy trên Linux dùng tốt biến này.
Cậu thử làm ví dụ sau nhằm viết lại đường dẫn kiểu
_http://domain.com/grab?foo=foobar (phía người dùng) sang _http://domain.com/page.php?bar=foobar (phía server) như sau :
—-
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{QUERY_STRING} foo=(.*)
RewriteRule ^grab(.*) /page.php?bar=%1
—-
Chúc cậu thành công.
July 1st, 2008 at 17:38
+ admin xem thử tớ làm code thế này liệu có kết quả tốt trên google ko
http://2htvn.net
+ tớ định tích hợp ajax vào code này kiểu như:
http://hayso1.com/m/#Album,3289
nhưng nếu làm kiểu ajax như này thì muốn google tìm đc dến web mình thì lại phải làm 1 file dạng như sitemap để index vào google.
(hướng dẫn dạng như này http://xtre.us/showthread.php?t=397 )
theo admin thì làm như thế liệu có hiệu quả bằng http://2htvn.net/mp3/?/Song/Play/149
July 1st, 2008 at 21:19
Chào 2htvn !
Cám ơn bạn đã quan tâm chủ đề. Tớ đã xem kỹ trang Web 2htvn, rất đẹp và trình bày hợp lý và nhiều dữ liệu.
Hai cách cậu đưa ra tớ cũng em kỹ và câu trả lời của tớ là cách rewrite URL hiện tại của 2htvn thuận tiện hơn cho công tụ tìm kiếm. Lý do vì cách thứ nhất rất dễ bị qui vào kỹ thuật cloaking. Khi mà nội dung hiển thị cho Search Engine lại khác nội dung cho người dùng thường. Và cấu trúc chỉ được tìm thấy qua sitemap.
Tuy nhiên đường dẫn hiện tại của 2htvn có thể cải thiện thêm nữa bằng cách rút gọn bớt thư mục con “/” như dấu hỏi, tham biến “?” hay thư mục con “Play” bằng nhiều cách. Trong đó dùng .htaccess và gắn nhiều biến vào trong một thư mục: Như chuyển từ “/Song/Play/149″ sang “/Ten-bai-hat-s149.html” hay “/Ten-bai-hat-s149/” chẳng hạn. Điều này sẽ giúp trang của bạn được đánh chỉ số tốt hơn rất nhiều.
Còn một cách rewrite-URL Web 2.0 bằng việc kết họp sử dụng song song Ajax và Web Static. Bạn hãy format đường dẫn URL cho một bài viết trên nền Web 2.0 như sau :
<a href=”ajax.htm?t=32” onClick=”navigate('ajax.html#t=32'); return false”>Rewrite URL với .htaccess</a>Trong đó, ajax.htm?t=32 là một trang Web tĩnh bạn tạo ra song song với kỹ thuật Ajax. Người dùng không hỗ trợ JavaScript (Google) sẽ sử dụng đường dẫn Web static, còn lại người dùng thường hỗ trợ JavaScript sẽ sử dụng phiên bản Ajax. Đây là cách làm hay nhất cho trang Web 2.0.
Thân.
August 6th, 2008 at 14:10
cho minh hoi: minh nhap dong lenh duoi day vao file .htaccess:
RewriteRule ^Them-image-group-album-(.*)\.html$ ?nong=groups&option=add_img&groupid=$1 [L]
Khi tren trinh duyet minh nhap: _http://Them-image-group-album–.html no cung chap nhan va nhu vay thi groupid se bang “-”, the nay thi kho^?. Mong admin chi giup lam the nao trong $1 thi nhan gia tri la so^’ thoi. Cam on
August 6th, 2008 at 14:14
minh viet sai chu xin sua lai nhu sau:
cho minh hoi: minh nhap dong lenh duoi day vao file .htaccess:
RewriteRule ^Them-image-group-album-(.*)\.html$ ?nong=groups&option=add_img&groupid=$1 [L]
Khi tren trinh duyet minh nhap:
_http://Them-image-group-albumâ??.htmlno cung chap nhan va nhu vay thi groupid se bang â??-â??, the nay thi kho^?. Mong admin chi giup lam the nao de $1 chi nhan gia tri la so^â?? thoi. Cam onAugust 24th, 2008 at 14:47
Làm theo hướng dẫn của admin mà vẫn không có gì thay đổi.
Mình dùng nukeviet, đường link có dạng modules.php?name=News&op=viewst&sid=121 thì làm thế nào mong admin chỉ giúp
September 15th, 2008 at 7:19
Mình làm cái này rất ok , nhưng web của mình có nhiều phần dùng js . Nếu ai vào mà link đó có dạng là thumuc/100/tieude.html mà họ lại vào là thumuc/100/tieu/de.html thì js của web mình ko có tác dụng nữa . Có cách nào hạn chế dấu / khi dùng mod_rewrite không vậy Admin .
Giống như web hiện giờ admin đang dùng vậy đó . Thanks nhiều ..
December 6th, 2008 at 12:39
Chào Bác! Mình muốn làm mà mấy link có đuôi dạng html trên URL giống thằng enbac.com thì phải làm sao? Cảm ơn bác!
December 29th, 2008 at 13:56
Sao mình làm được rồi.Nhưng lúc chạy thì nó không có gì thay đổi cả vẫn giống như lúc chưa có file .htaccess
January 20th, 2009 at 11:33
hi xin chao cac bac minh doc hoai ma kg hieu ve .htaccess, minh chi biet nom na .htaccess de rewrirte lai.
vi du:
RewriteRule ^download/(.*)$ /download.php?id=$1 [L]
#sẽ chuyển /download/X thành /download.php?id=X.
minh da thu tao file .htaccess de vao thu muc www nhung ket wa kg co gi thay doi, xin cac bac giup do cho vi du minh muon giau links http://localhost/private/download/index.php = http://localhost/page?id=download
nhu vay thoi co bac nao biet xin chi gium, thanks
March 2nd, 2009 at 10:09
xin chao Admin,
Anh a em da lam nhu ben anh huong dan:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^index.html test.php [L]
nhung ma khi em chay thi no van nam yen khong thay doi gi ca.
va khi em xem trong phpinfo thi mod_rewrite cung da duoc kich hoat.
Nho admin chi dum.
March 2nd, 2009 at 12:45
Bạn Quyet viết thế thì không chạy là đúng rồi, bạn phải hiểu ý nghĩa của dòng lệnh. Cái khó của htaccess là ko được viết sai
.
Trong trường hợp của bạn thì chỉ cần
RewriteEngine on
RewriteRule ^index.html test.php [L]
March 5th, 2009 at 9:40
xin chao admin.xin admin giúp mình để con bot google tự hiển thị đúng đường dẫn trển tỉm kiếm của gôgle.
lúc trước mình không có thư mục của forum,tức là web của mình là:http://paothoc.co.cc ,cho nên tất cả hiển thị trên gôgle là paothoc.co.cc/showgroups.php ..
bi giờ mình đưa thư mục chứa forum là http://paothoc.co.cc/up
mình đang đặt .htaccess của mod seo v2.2 ở thư muc gốc(htdocs) để tạo sitemap
vậy minh cần thêm lệnh nào để con botgoogle hiển thị đúng đường dẫn vào forum,xin admin chỉ giáo
March 5th, 2009 at 12:27
Việc thay đổi đường dẫn sẽ được Google cập nhất, tuy nhiên tùy vào thứ hạng Website của bạn mà việc này diễn ra nhanh hay chậm. Việc sử dụng sitemap XML cũng sẽ giúp Google đánh chỉ số lại nhanh hơn.
Một giải pháp toàn diện khi thay đổi được dẫn, cho người dùng thường (không rơi vào lỗi 500, file not foun) và máy tìm kiếm là sử dụng redirection 301, để chuyến hướng từ thư mục gốc đến thư mục forum, trong trường hợp của bạn. Hãy đọc thêm tại Redirection 301 cho thư mục.
Chúc bạn thành công.
March 13th, 2009 at 15:50
Xin chao Admin.
Nho anh chi giup em, khi em rewrite url tu index.php sang index.html thi khi chay trang index.html no van chay nhung ma sao khi go index.php thi no khong tu dong chuyen sang duoc index.html, bay gio no da rewrite duoc vi file index.html khong ton tai trong thu muc web va khi chay thi no hien thi noi dung cua trang index.php nhung khong hieu sao no khong tu dong thay doi khi minh chay link index.php
nho admin chi giup.
cam on nhieu.
March 17th, 2009 at 16:09
Mình xem cái này mấy chục lần rồi mà vần không làm đc!
ví dụ mình có site url như sau: index.php?cmd=cat&item=Item_01&cat=200&id=1000
minh muon chuyen thanh:
/sanpham/cataluge/ten_sub_con/tieude
các bác chỉ giúp
Can cau hinh trong.htaccess nhu the nào? va trong file index.php minh lam sao?
March 19th, 2009 at 11:02
Chào Admin,
Mình muốn hỏi về FURL
Ví dụ mình có 3 url sau tương ứng với 3 trường hợp (TH) :
TH1 : http://site_name.com/index.php?act=view
TH2 : http://site_name.com/index.php?act=view&id=1
TH3 : http://site_name.com/index.php?act=view&id=1&page=10
Trong file .htaccess mình viết như sau:
RewriteEngine on
RewriteRule ^(.*)-(.*)-(.*).html$ index.php?act=$1&id=$2&page=$3 [L]
thì khi gõ http://http://site_name.com/view-1-10.html chỉ có TH3 run, còn các TH1 & 2 ko có các biến act hoặc id hoặc page thì ko run đc, vậy Admin có thể hướng dẫn giúp làm cách nào mà 3 TH đều run Ok ko?
March 23rd, 2009 at 16:22
blog e: tuyetyeuthuong.co.cc\blog làm = wordpress, host: 000webhost. e da lam thu htaccess mà không được. A chỉ cho e với!
March 28th, 2009 at 1:09
Xin lỗi mọi người là trả lời hơi chậm trễ.
@Quyet: Thông thường bạn phải redirect thư mục hoặc các tệp tin bằng lệnh redirect 301. Nhưng trường hợp này rất dễ rơi vào vòng lặp vô tận, dẫn tới lỗi 500. Bạn hãy xem thêm Redirect 301
@PhuocLoc : Bạn có thể thử như sau :
RewriteRule ^tutorials/(.*)/(.*)$ /tutorials.php?id=$1&page=$2 [L]
RewriteRule ^/(.*)/(.*)/(.*)/(.*)$ /index.php?cmd=$1&item=$2&cat=$3&id=$4 [L]
Có thể xem lại thư tự xem đã đúng chưa ?
April 18th, 2009 at 15:49
Em viết cái url rewwrite như thế này xong web truyện của em vẫn ko được google SEO và link hiển thị trên address bar của trình duyệt trở lại cái link cũ lúc chưa rewrite mặc dù link khi click vào là link đã rewrite:
RewriteEngine on
RewriteBase /
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)([-_]+)([a-zA-Z0-9]+)(.*)(.htm)$ http://truyen.poke-mega.org/index.php?image=3456&list=1&page=2 [QSA,L]
RewriteRule ^([a-zA-Z0-9]+)(.htm)$ http://truyen.poke-mega.org/index.php?list=1 [QSA,L]
April 19th, 2009 at 6:48
@Help-14 : Code php hiển thị link rewrite_url thì cậu viết chuẩn theo ý của mình, tuy nhiên code rewrite trong htaccess thì cậu lại viết chưa chuẩn xác. Trường hợp Website của cậu cũng không thật phức tập, cậu chỉ cần đọc kỹ bài viết đơn giản trên và áp dụng đúng thì sẽ làm được. Còn đương nhiên thì Google khi theo liên kết url rewrite sẽ bị redirect đến url rewrite bị viết lỗi trong htaccess, bởi thế cậu không thấy kết quả mong muốn.
Thân
April 21st, 2009 at 11:11
Đây là code web truyện của em: http://www.mediafire.com/?xyhgzmjnzyy em đã sửa file index.php và .htaccess nhưng chả ăn thua, anh sửa để google seo được dùm em với !! http://www.google.com.vn/search?hl=vi&q=site%3Atruyen.poke-mega.org&btnG=T%C3%ACm+v%E1%BB%9Bi+Google&meta=&aq=f&oq=
April 23rd, 2009 at 15:28
Chào mọi người em có 1 vấn đề nhỏ như thế này : em đã làm được url rewrite được nhưng em muốn thêm các tham số đằng sau nữa :
VD : http://domain.com/san-pham/chi-tiet-san-pham.html?cmd=add_to_cart
Em muốn Webserver nó phải nhận ra cái tham số cmd đó. Cho em hỏi có cách nào làm được không ạ ?
May 15th, 2009 at 15:50
em muốn môi url đều chuyển về trang index lam sao?chi em với
May 18th, 2009 at 1:18
@ngocnv: Thì cậu dùng htaccess để tách lọc tham số, có khá nhiều cách, nhưng mình nghĩ cậu có thể dùng như sau :
@tan dat :
Xem thêm phần htaccess và redirection 301 nhé
Thân
May 23rd, 2009 at 11:41
em có chạy 1 code cũng sử dụng cái này khi em chạy web thì vào phần admin khung soạn thảo bị thay hẳn bằng trang chủ trang web luôn , bỏ file htaccess đi thì khung soạn thảo lại bình thường , ai biết cách khắc phục này chỉ dùm em với a , em cảm ơn nhiều
May 24th, 2009 at 20:59
@Hoàng Tử : Mình chưa hiểu rõ vấn đề của bạn với mod rewrite htaccess, bạn có thể nói rõ chi tiết hơn được không ?
June 28th, 2009 at 22:38
cho mình hỏi là khi dùng cách rewrite như vậy thì trong database mình có thay đổi gì không?
vd: trong database co table NEWS ( ID, Title, Content ) –> file php news.php?id=12
Bây giờ mình muốn thay thành /news/tim-kiem-thong-tin-viec-lam-12.html . Trong đó tim-kiem-thong-tin-viec-lam là cai Title sau khi đã xu ly Tieng Viet khong dau, 12 là ID —–> vay trong database co them 1 field Title_ID ( vd:tim-kiem-thong-tin-viec-lam ) hay không?
thanks moi người nhiều