2010-10-17 151 views
1

我是一個重寫的新手,我想知道爲什麼這個重寫規則不工作時,它就不再阿帕奇從開始阿帕奇重寫規則

RewriteRule ^([-a-zA-Z0-9_]+)?/constant/([-a-zA-Z0-9_]+)/(.*)$ http://$2.domain.com/$1/$3 [R=301, NC]

什麼這個規則應該做的是URL重構的例子:

http://www.domain.com/controller/constant/variable/action應該被重定向到 http://variable.domain.com/controller/action

http://www.domain.com/constant/variable應該被重定向到 http://variable.domain.com

基本上/常數/變量應該被檢測到,在子域插入,然後取出

請幫助我,我面臨這個微妙的問題。

感謝

+0

當您說「重定向」時,您是否期待客戶端重定向?這不是重寫規則的用處。 – 2010-10-17 08:30:56

+0

你的Apache httpd的錯誤信息究竟是什麼? – joschi 2010-10-17 08:38:44

+0

錯誤:配置文件中出現語法錯誤。當我評論這一行時,它的作品 – wael34218 2010-10-17 08:53:24

回答

2

兩個規則試試看:

RewriteRule ^constant/([-a-zA-Z0-9_]+)$ http://$2.domain.com/$1 [R=301,NC] 
RewriteRule ^([-a-zA-Z0-9_]+)/constant/([-a-zA-Z0-9_]+)/(.*)$ http://$2.domain.com/$1/$3 [R=301,NC] 

還要注意的是,標誌不得包含任何空格:[R=301, NC]是無效的語法,但[R=301,NC]是有效的語法。

+0

它沒有讓我語法錯誤,但它沒有工作:( – wael34218 2010-10-26 12:08:41

+0

感謝它的工作,我只是沒有注意到 – wael34218 2010-10-27 06:24:45