http 301轉換網址注意事項

分類: 工作雜談 作者: Doris

7 5 月 2013

部分在使用http 301進行網站轉址的時候,有的時候會發現很特別的問題。就是當網站是使用framework建造,然後有使用.htaccess進行rewrite時。我們一般正常的網址應該要長成以下的樣子:

http://www.xxx.xxx/a/b/c

或是

http://www.xxx.xxx/info/xxx

不過希望利用A網址用301透過B網址取得網站畫面的時候,有的時候會發現出現很特別的網址。像是出現以下的網址:

http://www.xxx.xxx/index.php/info/xxx

但實際上,index.php這隻程式,不應該會在網址上被看到。雖然index.php確實是在framework中每個地方一定會被載入的程式(就像bootstrap的作用)。只是實際經過framework的.htaccess做了rewrite,其實不應該顯示出來的。後來經查詢,一般在做http 301 rewrite的時候都有這樣的問題,因為http 301會將原始網址(含預設檔案),像是index.html或是index.php 直接的將檔案名全部顯示出來。意思就是在網址最後的斜線(/) 轉譯成了index.php(預設的檔案),然後再丟到新的網址去。解法的話,也是直接用.htaccess撰寫rule來將index.php不顯示出來。所以最後rewrite rule就是只要有.php就直接拿掉了... 後來我們的同事Tiger就針對這個這個問題,寫了一段rewrite rule來解決:


RewriteCond $1 !^([a-zA-Z1-9\-\_/]*\.php$)

以上這句會拿掉所有用任何型式帶進來不同檔名的.php檔案。當然也順利的讓網址長成我們原來想要的樣子了!

我要留言

關於這裡

這個部落格分享了哇寶在電子商務領域的技術及資訊,希望能讓更多人一起為台灣的網路產業加油。