2010-10-17 184 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