所以凡是使用linux的主機,我都會定義個301重定向,以利于SEO。昨天照例把htaccess傳到服務器上,沒想到傳上后網站無法訪問,一刪除就恢復正常??戳撕芏啾榇a,也沒發現什么問題。 干脆就重新學習下URL重寫方法。
規范化URL
描述:
在有些web服務器上,一個資源會擁有多個URL。在實際應用和發布中應該使用的是規范的URL,其他的則是簡寫或者只在內部使用。無論用戶在請求中使用什么形式的URL,最終看見的都應該是規范的URL。
解決方案:
對所有不規范的URL執行一個外部HTTP重定向,以改變它在瀏覽器地址欄中的顯示及其后繼請求。下例中的規則集用規范的/u/user替換/~user,并修正了/u/user所遺漏的后綴斜杠。
RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]
RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R]
規范化主機名
描述:
這個規則的目的是強制使用特定的主機名以代替其他名字。比如,你想強制使用代替example.com,就可以在以下方案的基礎上進行修改:
解決方案:
對運行在非80端口的站點
RewriteCond %{HTTP_HOST} !^fully/.qualified/.domain/.name [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*) :%{SERVER_PORT}/$1 [L,R]
對運行在80端口的站點
RewriteCond %{HTTP_HOST} !^fully/.qualified/.domain/.name [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) $1 [L,R]
參考了上面的規則,發現自己原先的代碼里少了個!號,加上就恢復正常了。
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^do-javascript.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) $1 [r=301,nc]
新聞熱點
疑難解答