作者 主題: .htaccess 的rewrite語法  (閱讀 1865 次)

0 會員 與 1 訪客 正在閱讀本文。

rottonkid

  • 可愛的小學生
  • *
  • 文章數: 3
    • 檢視個人資料
.htaccess 的rewrite語法
« 於: 2013-09-03 15:16 »
請教一下大大們

我有一個網站,是MVC架構,
網址長這樣:    ABC.com/index.php/zh_TW/front/product
我希望將他用rewriterule去縮短網址,改成  ABC.com/zh_TW/product

以下是我的.htaccess的寫法:
RewriteEngine on
RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^/index.php/(.+)/frontend/(.+)$ /$1/$2 [R=301,NE]
RewriteRule ^/zh_TW/(.+)$ /index.php/zh_TW/frontend/$1 [L,NE]

結果沒有作用,於是我改成如下:
RewriteEngine on
RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^index.php/(.+)/frontend/(.+)$ /$1/$2 [R=301,NE]
RewriteRule ^zh_TW/(.+)$ /index.php/zh_TW/frontend/$1 [L,NE]
(把/拿掉)
執行後,瀏覽器回應"這個網頁含有重新導向迴圈",




想請教這樣子要怎麼改呢??
另外就是為什麼加了個/就不行了??  我怕以後如果出現某個檔案叫 AAAindex.php 他也給我重新導向...

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5392
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: .htaccess 的rewrite語法
« 回覆 #1 於: 2013-09-03 15:33 »
1. AAAindex.php 不會符合 ^index.php (RE 不用把 . 跳脫嗎? 你該怕 indexaphp 符合你的條件吧.....)
2. 兩條 rule,  一條把 /index.php/zh_TW/frontend/product 轉成 /zh_TW/product, 然後另一條把 /zh_TW/product 再轉成 /index.php/zh_TW/frontend/product => 啊不就轉不完了? 到底是要轉成什麼啊?

rottonkid

  • 可愛的小學生
  • *
  • 文章數: 3
    • 檢視個人資料
Re: .htaccess 的rewrite語法
« 回覆 #2 於: 2013-09-03 15:42 »
大大您好 

第二條 我是想讓他 網址是/zh_TW/product的時後 ,實際上去讀 /index.php/zh_TW/frontend/product的檔案

也就是說當網址是/index.php/zh_TW/frontend/product的時後URL變成/zh_TW/product,但實際上還是去讀取原本/index.php/zh_TW/frontend/produc那個檔案

[L]==>不就是說到此為止不會再繼續了嗎??

(大大您提的第一條可能是我沒有說清楚,/index.php/zh_TW/frontend/product 的 index.php我只要接在domain後面的才要導,如果其他地方出現的就不要)


還是說我這樣子寫不是我所想要的??

另外就是,我現在是寫在.htaccess裡面,
我原本是寫在apache的.conf 檔裡,執行上並沒有出錯,也是照我想要的在導向.....

所以我不知道我到底哪裡出了錯誤?還是在.htaccess的寫法不一樣??
« 上次編輯: 2013-09-03 16:11 由 rottonkid »