Chào các bn!Mình hướng dn các bn s dng .htaccess to đường dn rt đp kiu .html
mình đã áp dng vào trang http://vanphongdaidien.net
Bt c khio bn s dng mod_rewrite (các phn ca Apache mà hin tt c ma thut này),
bn cn phi làm ..
bn ch cn làm điu này mt ln mi. tp tin htaccess:
y chn + FollowSymlinks
RewriteEngine on
.. trước khi bt kỳ quy tc Rewrite. lưu ý: + FollowSymLinks phi được kích hot cho bt c quy
tc đ làm vic, đây là mt yêu cu bo mt ca viết li đng cơ. Bình thường, nó cho phép
trong gc và bn không cn phi thêm nó, nhưng nó không đau đ làm như thế, và tôi s chèn
vào tt c các ví d trên trang này, ch trong trường hp *.
ng kế tiếp ch cn chuyn mch trên đng cơ viết li cho thư mc đó. nếu điu này Ch th
bn chính htaccess., sau đó đng cơ Rewrite là lý thuyết kích hot cho toàn b trang web ca
bn, nhưng nó khôn ngoan đ luôn luôn gn dòng trước khi bn viết bt kỳ Redirections, bt c
nơi nào.
* Mc dù không cao, ch nhà ca bn có th+ FollowSymLinks kích hot cp đ gc,
nhưng vn không cho phép Ngoài ra trong htaccess;. trong trường hp đó, thêm +
FollowSymLinks s phá v thiết lp ca bn (có thmt li 500), do đó, ch cn g b nó, và
các quy tc ca bn nên làm vic tt.
Quan trng: Trong khi mt s các ch th trên trang y có th xut hin chia tácho hai dòng
trong trình duyt ca bn, trong htaccess ca bn. Tp h phi tn ti hoàn toàn trên mt dòng.
Nếu bn kéo chn và sao cp các ch th trên trang này, h ch cn dán tt vào bt kỳ son
tho văn bn.
đơn gin viết li
Đơn gin ch cn đt, Apache qt URL ca tt cc yêu cu gi đến, kim tra cho phù hp
trong tp tin htaccess ca chúng tôi. Và viết li nhng kết hp các URL đến bt c điu gì
chúng tôi ch đnh. mt cái gì đó như thế này ..
tt c yêu cu đ whatever.htm s được gi đến whatever.php:
y chn + FollowSymlinks
RewriteEngine on
RewriteRule ^(.*) \ htm $ $ 1.php. [NC]
Thun tin cho bt c ai cp nht mt trang web t htm tĩnh (bn có th s dng html, hoc..
(.*), Htm. Htm, vv?) Vào các trang php năng đng, yêu cu nhng trang cũ s t đng được viết
li đ các url mi ca chúng tôi. không có mt thông báo mt điu, du khách và công c tìm
kiếm th truy cp ni dung ca bn bng cách. đ li s cai tr ; như mt tin thưởng
thêm, điu này cho phép chúng tôi d dàng chia mã php và bao gmc cu trúc html ca mình
thành hai tp tin riêng bit, mt ý tưởng tt đp; làm cho chnh sa cp nht mt khoe. The
[NC] mt phn cui có nghĩa là "Không có Case", hoc "case-insensitive"; thêm chi tiết vc
thiết b chuyn mch, sau đó.
Folks có th liên kết ti whatever.htm hoc whatever.php, nhưng h luôn luôn nhn được
whatever.php trong trình duyt ca h, và điu này làm vic ngay c khi whatever.htm không tn
ti! Nhưng tôi straying ..
Vì nó là viết tt, đó là mt chút kn lanh; folks vn s whatever.htm trong thanh đa ch trình
duyt ca h, và vn s gi du cũ ca bn htm URL.'s. Công c tìm kiếm, quá, s gi trên lp
ch mc các liên kết ca bn như. Htm, mt s người thm chí cho rng, phc v cùng mt ni
dung t hai nơi khác nhau có th có bn b pht bng các công c tìm kiếm. Điuy có th
hoc không phin bn, nhưng nếu nó không có gì, mod_rewrite có th làm mt s chi tiết ma
thut ..
điu này sm mt "thc s" chuyn hướng bên ngoài:
y chn + FollowSymlinks
RewriteEngine on
RewriteRule ^(.+) \ htm $ $ http://corz.org/ 1.php [R, NC.]
Thi gian này, chúng tôi hướng dn mod_rewrite đ làm mt hp bên ngoài viết li, aka, "chuyn
hướng". Bây gi, thay vì ch viết li nn on-the-fly, trình duyt ca người dùng được th cht
chuyn hướng đến mt URI mi, và whatever.php xut hin trong thanh đa ch ca trình duyt -
công c tìm kiếm các t chc spidering khác s t đng cp nht các liên kết ca h vi các
phiên bn. php; thng tt c mi người. Bn có th mt thi gian ca bn vi nhng cp nht,
quá.
Lưu ý: nếu bn s dng [R] mt mình, mc đnh đ gi mt HTTP "di đi tm thi" chuyn
hướng, aka, "302". Nhưng bn có th gi các khác, như vy ..
này thc hin chính xác ging như các RewriteRule ví d trước.
RewriteRule ^(.+) \ htm $ $ http://corz.org/ 1.php [. R = 302, NC]
Được ri, tôi gi mã chính xácng, nhưng tôi đã không có ti. Đ biết chi tiết ca nhiu 30 *
s phn ng bn có th gi, xem đây. Hu hết mi người dường như mun gi 301, Aka
", di chuyn PERMENENTLY".
Lưu ý: nếu bn thêm mt "L" c đ trn, có nghĩa là "Rule mi", ví d: [R = 302, NC, L]; Apache
s ngng chế biến các quy tc cho yêu cu này lúc đó, có th hoc có th không có nhng
bn mun. Dù bng cách nào, nó có ích cho biết.
không-đ-viết li đơn gin ... căn h liên kết và nhiu hơn na
Bn th nhn thy, ví d trên s dng thường xuyên biu đ php vi các biến. Gì mà
đơn gin ch nghĩa là .. phù hp vi phn bên trong (+). và s dng nó đ xây dng "$ 1"
trong URL mi. i cách khác, (+). = $ 1 bn có thnhiu (+). Phn và cho mi, mod_rewrite
t đng to ra mt kết hp $ 1, $ 2, $ 3, etc, trong mc tiêu ca bn (aka. 'thay thế') URL. Cơ s
này cho phép chúng tôi làm tt cc loi th thut, ph biến nht ca nhng người, là vic
to ra các "liên kết phng" ..
Ngay c mt cute ngn liên kết như http://mysite/grab?file=my.zip quá xu cho mt s người, và
không ít hơn mt trường hc cũ tht s vng chc min / path / căn h / liên
kết s làm gì. May mn thay, mod_rewrite giúp bn d dàng chuyn đi các URL vi chui truy
vn nhiu biến thành chínhc này, cái gì như ..
mt phc tp hơn viết li quy tc:
y chn + FollowSymlinks
RewriteEngine on
RewriteRule ^ /([^/]+)/([^/]+). file zip / download.php? Phn = $ 1 & file = $ 2 [NC]
s cho phép bn hin nay liên kết y như ..
http://mysite/files/games/hoopy.zip
nn đã có minh bch dch, phía máy ch, đ ..
http://mysite/download.php?section=games&file=hoopy
trong đó mt s kch bn th q trình. Bn thy, nhiu công c tìm kiếm ch đơn gin
không tuân theo ca chúng tôi to ra = liên kết?, Vy nếu bn to các trang to ra, điu này là
ích. Tuy nhiên, nó ch cácng c tìm kiếm câm mà không th xcác loi liên kết;
chúng tôi đã yêu cu chính mình .. nào chúng ta thc s mun được lit kê bng các công c
tìm kiếm dumb? Google s x lý mt vài thông s tt trong URL ca bn không có bt kỳ
vn đ, và (đói đói) msn-bot dng ti không cóđ nhn rng trang, Đôi khi li nhiu ln và
mt ln na ...
nhân tôi cm thy đó là công c tìm kiếm mà phi phn đu đ theo kp vi công ngh web
hin đi, nói cách kc, chúng ta kng nên phi câm xung cho h. Nhưng đó ch là quan đim
ca tôi. Nhiu người dùng s thích / files / game / hoopy.zip ti / download.php? phn = trò chơi
& file = hoopy nhưng tôi không nh mt trong hai cách. Khi ai đó ch ra cho tôi gn đây, trình bày
kết như tiêu chun / phng / đường đi có nghĩa là bn đang ít có kh năng đ được folks làm
li chính t trong URL, nên cái gì như ..
thm chí mt phc tp hơn viết li quy tc:
y chn + FollowSymlinks
RewriteEngine on
RewriteRule ^ blog / ([0-9 ]+)-([ az] +) http://corz.org/blog/index.php?archive = $ 1 - $ 2 [NC]
s mt la gn gàng, cho phép bt kỳ ai truy cp vào kho lưu tr blog ca tôi bng cách làm ..
http://corz.org/blog/2003-nov
trong trình duyt ca h, và automagically chuyn phía máy ch vào ..
http://corz.org/blog/index.php?archive=2003-nov
cái nào corzblog s hiu được. Tht dng đ thy rng vi mt chút trí tưởng tượng, s
hiu biết cơ bn ca mt posix thường xuyên biu, Bn th thc hin mt s thao tác rt mát
URL.
Dưới đây là nhng điu cơ bn rt ca regexp (m rng t Apache mod_rewrite tài liu hướng
dn) ..
Escaping:
\char thoát c th char
Ví d đ ch đnht đc bit .. [].() \ vv
Văn bn:
. Bt kỳ nhân vt duy nht (trên = riêng ca mình URI toàn b)
[chars] t lp hc: Mt trong nhng ký t sau đây
[^chars] Ký t lp: Khôngsau chars
text1|text2 Thay thế: text1 hoc text2 (i.e. "hoc")
e.g. [^ /] phù hp vi bt kỳ nhân vt ngoi tr /
(foo | bar) \. html phù hp foo.html và bar.html
Quantifiers:
? 0 hay 1 ca văn bn trước
* 0 hoc N ca các văn bn trước (đói)
+ 1 hoc N ca các văn bn trước
e.g. (. +) \ html?. phù hp foo.htm và foo.html
(foo)? thanh \. html phù hp bar.html và foobar.html
Nhóm:
(văn bn) Nhóm ca văn bn
Hoc là đ thiết lp biên gii ca mt s thay thế hoc
đm nơi backreferences nnhóm có th
được s dng vàoc mc tiêu ca mt RewriteRule vi $ n
e.g. ^(.*)\ html foo.php?. bar =$ 1
Neo:
^ Bt đu ca dòng neo
$ Cui dòng neo
Neo mt cách rõ ràng rng các nhân vt quc gia ngay bên cnh nó PHI
("^"), th là các nn vt đu tiên hoc ("$") ký t cui cùng
ca chui URI đ phù hp vi mô hình, ví d.
^ foo (.*) phù hp foo và foobar nhưng không eggfoo
(.*) l $ p hp ngu ngct m, Nhưng không foo
rút ngn URL
Mt s dng chung mod_rewrite là đt ngn URL's. Ngn hơn URL ca d nh, tt nhiên,
d dàng hơn đ loi. Mt ví d ..
hãy cn thn vi biu thc chính quy:
y chn + FollowSymlinks
RewriteEngine On
RewriteRule ^ grab / công / files / download / download.php
quy tc này s biến đi URL ca người dùng này ..
http://mysite/grab?file=my.zip
phía máy ch, thành ..
http://mysite/public/files/download/...hp?file=my.zip
là mt wee la tôi s dng choy distro ca tôi, trong s nhng th khác. tt c mi người
thích ngn URL, và vì vy s bn; s dng k thut này, bn có th di chuyn / công cng / files
/ download / ti bt c nơi nào khác vào trang web ca bn, và tt cc liên kết cũ vn làm
vic tt; ch cn thay đi tp tin htaccess. ca bn đ phn ánh v trí mi. sa mt dòng, được
thc hin - đp - có nghĩa là ngay c khi công c là cách sâu trong trang web ca bn th
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 ngn, nhưng
dãy phòng..
Ngun tham kho url: http://vanphongdaidien.net/dich-vu/d...-dai-dien.html