所以凡是使用linux的主機(jī),我都會(huì)定義個(gè)301重定向,以利于SEO。昨天照例把htaccess傳到服務(wù)器上,沒(méi)想到傳上后網(wǎng)站無(wú)法訪(fǎng)問(wèn),一刪除就恢復(fù)正常??戳撕芏啾榇a,也沒(méi)發(fā)現(xiàn)什么問(wèn)題。 干脆就重新學(xué)習(xí)下URL重寫(xiě)方法。
規(guī)范化URL
描述:
在有些web服務(wù)器上,一個(gè)資源會(huì)擁有多個(gè)URL。在實(shí)際應(yīng)用和發(fā)布中應(yīng)該使用的是規(guī)范的URL,其他的則是簡(jiǎn)寫(xiě)或者只在內(nèi)部使用。無(wú)論用戶(hù)在請(qǐng)求中使用什么形式的URL,最終看見(jiàn)的都應(yīng)該是規(guī)范的URL。
解決方案:
對(duì)所有不規(guī)范的URL執(zhí)行一個(gè)外部HTTP重定向,以改變它在瀏覽器地址欄中的顯示及其后繼請(qǐng)求。下例中的規(guī)則集用規(guī)范的/u/user替換/~user,并修正了/u/user所遺漏的后綴斜杠。
RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]
RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R]

規(guī)范化主機(jī)名

描述:
這個(gè)規(guī)則的目的是強(qiáng)制使用特定的主機(jī)名以代替其他名字。比如,你想強(qiáng)制使用www.example.com代替example.com,就可以在以下方案的基礎(chǔ)上進(jìn)行修改:
解決方案:
對(duì)運(yùn)行在非80端口的站點(diǎn)

RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*) http://fully.qualified.domain.name:%{SERVER_PORT}/$1 [L,R]

對(duì)運(yùn)行在80端口的站點(diǎn)

RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://fully.qualified.domain.name/$1 [L,R]

 

參考了上面的規(guī)則,發(fā)現(xiàn)自己原先的代碼里少了個(gè)!號(hào),加上就恢復(fù)正常了。
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^do-javascript.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.do-javascript.com/$1 [r=301,nc]