酷!學園

技術討論區 => 網頁技術 => 主題作者是: rottonkid 於 2013-09-03 15:16

主題: .htaccess 的rewrite語法
作者: rottonkid2013-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 他也給我重新導向...
主題: Re: .htaccess 的rewrite語法
作者: twu22013-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 => 啊不就轉不完了? 到底是要轉成什麼啊?
主題: Re: .htaccess 的rewrite語法
作者: rottonkid2013-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的寫法不一樣??