2009-08-22 131 views
0

我有一個規則,得到三個部分,用/(斜線)分隔。 他們代表/應用/控制器/動作,但它們是可選的,這意味着//應用/應用/控制器工作爲好。阿帕奇modrewrite htaccess問題

的事情是,我想另一個規則,這一次,這將設置默認的應用程序,以「前端」之前,我想應該是這樣的:

RewriteRule ^(.*)$ frontend/$1 

但是,如果我有url /part1一切正常,它被收到爲/前端/ part1。但是,如果url包含/(斜槓),如/part1/part2,則會出現500內部錯誤。如果我刪除這條規則,最初的規則與/前端/ part1/part2一起工作,所以問題在於這個規則。看起來1美元並不接受它的斜線。這是一個已知的事實嗎?

還有,我想,如果當前URL已經與前/啓動此規則不跑了,我想是這樣的:

RewriteRule ^frontend(/.*)?$ frontend$1 [S=1] 

還是會這樣用更優雅的完成RewriteCond?

謝謝!

回答

2

試試這個規則:

RewriteCond $0 !^frontend/ 
RewriteRule .* frontend/$0 [L] 
+1

謝謝!它似乎工作。 但是,你能否快速解釋爲什麼不是我的工作或你和我的solutin有什麼區別? $ 0表示所有查詢,對不對? – treznik 2009-08-22 14:51:31

+1

您的解決方案可能導致無限循環。但是我的規則排除了任何以'前端/'開頭的匹配被重寫爲'前端/ ...'的匹配。而且,是的,「$ 0」包含整個模式的匹配。 – Gumbo 2009-08-22 14:54:48