linux URL的301重新導向程式碼分析

來源:互聯網
上載者:User

所以凡是使用linux的主機,我都會定義個301重新導向,以利於SEO。昨天照例把htaccess傳到伺服器上,沒想到傳上後網站無法訪問,一刪除就恢複正常。看了很多遍代碼,也沒發現什麼問題。 乾脆就重新學習下URL重寫方法。
正常化URL
描述:
在有些web伺服器上,一個資源會擁有多個URL。在實際應用和發布中應該使用的是規範的URL,其他的則是簡寫或者只在內部使用。無論使用者在請求中使用什麼形式的URL,最終看見的都應該是規範的URL。
解決方案:
對所有不規範的URL執行一個外部HTTP重新導向,以改變它在瀏覽器地址欄中的顯示及其後繼請求。下例中的規則集用規範的/u/user替換/~user,並修正了/u/user所遺漏的尾碼斜杠。
RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]
RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R]

正常化主機名稱

描述:
這個規則的目的是強制使用特定的主機名稱以代替其他名字。比如,你想強制使用www.example.com代替example.com,就可以在以下方案的基礎上進行修改:
解決方案:
對運行在非80連接埠的網站

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]

對運行在80連接埠的網站

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

參考了上面的規則,發現自己原先的代碼裡少了個!號,加上就恢複正常了。
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^do-javascript.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.do-javascript.com/$1 [r=301,nc]

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.