Chào các bạn! Mình hướng dẫn các bạn sử dụng .htaccess tạo đường dẫn rất đẹp kiểu .html Bất cứ khi nào bạn sử dụng mod_rewrite (các phần của Apache mà hiện tất cả ma thuật này), bạn cần phải làm
Bạn chỉ cần làm điều này một lần mỗi. tập tin htaccess:
Mã Tùy chọn + FollowSymlinks RewriteEngine on .. trước khi bất kỳ quy tắc Rewrite. lưu ý: + FollowSymLinks phải được kích hoạt cho bất cứ quy tắc để làm việc, đây là một yêu cầu bảo mật của viết lại động cơ. Bình thường, nó cho phép trong gốc và bạn không cần phải thêm nó, nhưng nó không đau để làm như thế, và tôi sẽ chèn nó vào tất cả các ví dụ trên trang này, chỉ trong trường hợp *. Dòng kế tiếp chỉ cần chuyển mạch trên động cơ viết lại cho thư mục đó. nếu điều này Chỉ thị là ở bạn chính htaccess., sau đó động cơ Rewrite là lý thuyết kích hoạt cho toàn bộ trang web của bạn, nhưng nó khôn ngoan để luôn luôn gắn dòng trước khi bạn viết bất kỳ Redirections, bất cứ nơi nào. * Mặc dù không cao, chủ nhà của bạn có thể có + FollowSymLinks kích hoạt ở cấp độ gốc, nhưng vẫn không cho phép Ngoài ra trong htaccess;. trong trường hợp đó, thêm + FollowSymLinks sẽ phá vỡ thiết lập của bạn (có thể là một lỗi 500), do đó, chỉ cần gỡ bỏ nó, và các quy tắc của bạn nên làm việc tốt. Quan trọng: Trong khi một số các chỉ thị trên trang này có thể xuất hiện chia tách vào hai dòng trong trình duyệt của bạn, trong htaccess của bạn. Tập họ phải tồn tại hoàn toàn trên một dòng. Nếu bạn kéo chọn và sao chép các chỉ thị trên trang này, họ chỉ cần dán tốt vào bất kỳ soạn thảo văn bản. đơn giản viết lại Đơn giản chỉ cần đặt, Apache quét URL của tất cả các yêu cầu gửi đến, kiểm tra cho phù hợp trong tập tin htaccess của chúng tôi. Và viết lại những kết hợp các URL đến bất cứ điều gì chúng tôi chỉ định. một cái gì đó như thế này .. tất cả yêu cầu để whatever.htm sẽ được gửi đến whatever.php: Mã CODE
Thuận tiện cho bất cứ ai cập nhật một trang web từ htm tĩnh (bạn có thể sử dụng html, hoặc.. (.*), Htm. Htm, vv?) Vào các trang php năng động, yêu cầu những trang cũ sẽ tự động được viết lại để các url mới của chúng tôi. không có một thông báo một điều, du khách và công cụ tìm kiếm có thể truy cập nội dung của bạn bằng cách. để lại sự cai trị ở; như là một tiền thưởng thêm, điều này cho phép chúng tôi dễ dàng chia mã php và bao gồm các cấu trúc html của mình thành hai tập tin riêng biệt, một ý tưởng tốt đẹp; làm cho chỉnh sửa và cập nhật một khoe. The [NC] một phần ở cuối có nghĩa là "Không có Case", hoặc "case-insensitive"; thêm chi tiết về các thiết bị chuyển mạch, sau đó. Folks có thể liên kết tới whatever.htm hoặc whatever.php, nhưng họ luôn luôn nhận được whatever.php trong trình duyệt của họ, và điều này làm việc ngay cả khi whatever.htm không tồn tại! Nhưng tôi straying .. Vì nó là viết tắt, đó là một chút khôn lanh; folks vẫn sẽ có whatever.htm trong thanh địa chỉ trình duyệt của họ, và vẫn sẽ giữ dấu cũ của bạn htm URL.'s. Công cụ tìm kiếm, quá, sẽ giữ trên lập chỉ mục các liên kết của bạn như. Htm, một số người thậm chí cho rằng, phục vụ cùng một nội dung từ hai nơi khác nhau có thể có bạn bị phạt bằng các công cụ tìm kiếm. Điều này có thể hoặc không phiền bạn, nhưng nếu nó không có gì, mod_rewrite có thể làm một số chi tiết ma thuật .. điều này sẽ làm một "thực sự" chuyển hướng bên ngoài: Mã Tùy chọn + FollowSymlinks RewriteEngine on RewriteRule ^(.+) htm $ $ http://mrkhoale.com/ 1.php [R, NC.] Thời gian này, chúng tôi hướng dẫn mod_rewrite để làm một hợp bên ngoài viết lại, aka, "chuyển hướng". Bây giờ, thay vì chỉ viết lại nền on-the-fly, trình duyệt của người dùng được thể chất chuyển hướng đến một URI mới, và whatever.php xuất hiện trong thanh địa chỉ của trình duyệt - công cụ tìm kiếm và các tổ chức spidering khác sẽ tự động cập nhật các liên kết của họ với các phiên bản. php; thắng tất cả mọi người. Bạn có thể mất thời gian của bạn với những cập nhật, quá. Lưu ý: nếu bạn sử dụng [R] một mình, nó mặc định để gửi một HTTP "dời đi tạm thời" chuyển hướng, aka, "302". Nhưng bạn có thể gửi các mã khác, như vậy .. này thực hiện chính xác giống như các RewriteRule ví dụ trước. Mã RewriteRule ^(.+) htm $ $ http://thienduongweb.com/ 1.php [. R = 302, NC] Được rồi, tôi gửi mã chính xác cùng, nhưng tôi đã không có tới. Để biết chi tiết của nhiều 30 * mã số phản ứng bạn có thể gửi, xem ở đây. Hầu hết mọi người dường như muốn gửi 301, Aka ", di chuyển PERMENENTLY". Lưu ý: nếu bạn thêm một "L" cờ để trộn, có nghĩa là "Rule mới", ví dụ: [R = 302, NC, L]; Apache sẽ ngừng chế biến các quy tắc cho yêu cầu này lúc đó, có thể hoặc có thể không có những gì bạn muốn. Dù bằng cách nào, nó có ích cho biết. không-để-viết lại đơn giản ... căn hộ liên kết và nhiều hơn nữa Bạn có thể nhận thấy, ví dụ trên sử dụng thường xuyên biểu để phù hợp với các biến. Gì mà đơn giản chỉ có nghĩa là .. phù hợp với phần bên trong (+). và sử dụng nó để xây dựng "$ 1" trong URL mới. Nói cách khác, (+). = $ 1 bạn có thể có nhiều (+). Phần và cho mỗi, mod_rewrite tự động tạo ra một kết hợp $ 1, $ 2, $ 3, etc, trong mục tiêu của bạn (aka. 'thay thế' URL. Cơ sở này cho phép chúng tôi làm tất cả các loại thủ thuật, và phổ biến nhất của những người, là việc tạo ra các "liên kết phẳng" .. Ngay cả một cute ngắn liên kết như Mã http://mysite/grab?file=my.zip quá xấu cho một số người, và không ít hơn một trường học cũ thật sự vững chắc miền / path / căn hộ / liên kết sẽ làm gì. May mắn thay, mod_rewrite giúp bạn dễ dàng chuyển đổi các URL với chuỗi truy vấn và nhiều biến thành chính xác này, cái gì như .. một phức tạp hơn viết lại quy tắc: Mã Tùy chọn + FollowSymlinks RewriteEngine on RewriteRule ^ /([^/]+)/([^/]+). file zip / download.php? Phần = $ 1 & file = $ 2 [NC] sẽ cho phép bạn hiện nay liên kết này như .. Mã http://mysite/files/games/hoopy.zip và nền đã có minh bạch dịch, phía máy chủ, để .. Mã http://mysite/download.php?section=games&file=hoopy trong đó một số kịch bản có thể quá trình. Bạn thấy, nhiều công cụ tìm kiếm chỉ đơn giản là không tuân theo của chúng tôi tạo ra = liên kết?, Vậy nếu bạn tạo các trang tạo ra, điều này là có ích. Tuy nhiên, nó chỉ có các công cụ tìm kiếm câm mà không thể xử lý các loại liên kết; chúng tôi đã yêu cầu chính mình .. nào chúng ta thực sự muốn được liệt kê bằng các công cụ tìm kiếm dumb? Google sẽ xử lý một vài thông số tốt trong URL của bạn mà không có bất kỳ vấn đề, và (đói đói) msn-bot dừng tại không có gì để nhận rằng trang, Đôi khi lại nhiều lần và một lần nữa ... Cá nhân tôi cảm thấy đó là công cụ tìm kiếm mà phải phấn đấu để theo kịp với công nghệ web hiện đại, nói cách khác, chúng ta không nên phải câm xuống cho họ. Nhưng đó chỉ là quan điểm của tôi. Nhiều người dùng sẽ thích / files / game / hoopy.zip tới / download.php? phần = trò chơi & file = hoopy nhưng tôi không nhớ một trong hai cách. Khi ai đó chỉ ra cho tôi gần đây, trình bày kết như tiêu chuẩn / phẳng / đường đi có nghĩa là bạn đang ít có khả năng để có được folks làm lỗi chính tả trong gõ URL, nên cái gì như .. thậm chí một phức tạp hơn viết lại quy tắc: Mã Tùy chọn + FollowSymlinks RewriteEngine on RewriteRule ^ blog / ([0-9 ]+)-([ az] +) http://mrkhoale.com/blog/index.php?archive = $ 1 - $ 2 [NC] sẽ là một lừa gọn gàng, cho phép bất kỳ ai truy cập vào kho lưu trữ blog của tôi bằng cách làm .. Mã http://mrkhoale.com/blog/2003-nov trong trình duyệt của họ, và nó có automagically chuyển phía máy chủ vào .. Mã http://mrkhoale.com/blog/index.php?archive=2003-nov cái nào corzblog sẽ hiểu được. Thật dễ dàng để thấy rằng với một chút trí tưởng tượng, và sự hiểu biết cơ bản của một posix thường xuyên biểu, Bạn có thể thực hiện một số thao tác rất mát URL. Dưới đây là những điều cơ bản rất của regexp (mở rộng từ Apache mod_rewrite tài liệu hướng dẫn) .. Escaping: char thoát mà cụ thể char Ví dụ để chỉ định ký tự đặc biệt .. [].() vv Văn bản: . Bất kỳ nhân vật duy nhất (trên = riêng của mình URI toàn bộ) [chars] Ký tự lớp học: Một trong những ký tự sau đây [^chars] Ký tự lớp: Không có sau chars text1|text2 Thay thế: text1 hoặc text2 (i.e. "hoặc" e.g. [^ /] phù hợp với bất kỳ nhân vật ngoại trừ / (foo | bar) . html phù hợp foo.html và bar.html Quantifiers: ? 0 hay 1 của văn bản trước * 0 hoặc N của các văn bản trước (đói) + 1 hoặc N của các văn bản trước e.g. (. +) html?. phù hợp foo.htm và foo.html (foo)? thanh . html phù hợp bar.html và foobar.html Nhóm: (văn bản) Nhóm của văn bản Hoặc là để thiết lập biên giới của một sự thay thế hoặc để làm nơi backreferences nnhóm có thể được sử dụng vào các mục tiêu của một RewriteRule với $ n e.g. Mã ^(.*) html foo.php?. bar =$ 1 Neo: ^ Bắt đầu của dòng neo $ Cuối dòng neo Neo một cách rõ ràng rằng các nhân vật quốc gia ngay bên cạnh nó PHẢI ("^", thể là các nhân vật đầu tiên hoặc ("$" ký tự cuối cùng của chuỗi URI để phù hợp với mô hình, ví dụ. ^ foo (.*) phù hợp foo và foobar nhưng không eggfoo (.*) l $ phù hợp ngu ngốc và mát mẻ, Nhưng không foo rút ngắn URL Một sử dụng chung mod_rewrite là để rút ngắn URL's. Ngắn hơn URL của dễ nhớ và, tất nhiên, dễ dàng hơn để loại. Một ví dụ .. hãy cẩn thận với biểu thức chính quy: Mã Tùy chọn + FollowSymlinks RewriteEngine On RewriteRule ^ grab / công / files / download / download.php quy tắc này sẽ biến đổi URL của người dùng này .. Mã http://mysite/grab?file=my.zip phía máy chủ, thành .. Mã http://mysite/public/files/download/download.php?file=my.zip mà là một wee lừa tôi sử dụng cho máy distro của tôi, trong số những thứ khác. tất cả mọi người thích ngắn URL, và vì vậy sẽ bạn; sử dụng kỹ thuật này, bạn có thể di chuyển / công cộng / files / download / tới bất cứ nơi nào khác vào trang web của bạn, và tất cả các liên kết cũ vẫn làm việc tốt; chỉ cần thay đổi tập tin htaccess. của bạn để phản ánh vị trí mới. sửa một dòng, được thực hiện - đẹp - có nghĩa là ngay cả khi công cụ là cách sâu trong trang web của bạn có thể có các liên kết này mát như .. / trueview / sample.php và cái này; Liên kết đó không chỉ ngắn, nhưng dãy phòng.. |
Thêm vào trang Google +
Số lần xem : 10360
Đánh giá