2010-05-21 91 views
0

这是这个问题的后续:Rewrite URL - how to get the hostname and the path?mod_rewrite的重写规则不工作

我得到这个重写规则:

RewriteEngine On 
RewriteRule ^(http://[-A-Za-z0-9+&@#/%=~_|!:,.;]*)/([-A-Za-z0-9+&@#/%=~_|!:,.;]*)\?([A-Za-z0-9+&@#/%=~_|!:,.;]*)$ http://http://www.xmldomain.com/bla/$2?$3&rtype=xslt&xsl=$1/$2.xsl 

这似乎是正确的,正是我需要的。但它在我的服务器上不起作用。我收到一个404页面未找到错误。

mod_rewrite的启用,如下面的简单规则是工作的罚款:

RewriteEngine On 
RewriteRule ^page/([^/\.]+)/?$ index.php?page=$1 [L] 

你能帮忙吗?

谢谢

+0

ServerFault问题,大概。 – 2010-05-21 09:44:48

+0

你尝试了什么URI? – Gumbo 2010-05-21 11:43:34

回答

0

它认为这是不正确的。你不能使用url作为RewriteRule的第一个操作数。

你应该写的,而不是

RewriteRule ^(http://[-A-Za-z0-9+&@#/%=~_|!:,.;]*)/([-A-Za-z0-9+&@#/%=~_|!:,.;]*)\?([A-Za-z0-9+&@#/%=~_|!:,.;]*)$ http://http://www.xmldomain.com/bla/$2?$3&rtype=xslt&xsl=$1/$2.xsl 

是什么(编辑:您要到最后部分路径匹配某种原因,我会责成)

RewriteCond %{HTTP_HOST} !="" 
RewriteRule ^/(.*?)([^/]+)(?:/)?$ http://www.xmldomain.com/bla/page?rtype=xslt&xsl=http%3A%2F%2F%{HTTP_HOST}%2F$1$2.xsl%2A [QSA,B,P,NE] 

还要注意的是重写规则不会被虚拟主机自动继承。您必须明确激活继承。

+0

好的。但这并不能帮助我解决问题。我需要分别在最后一个斜杠(“页面”)之后捕获字符串。 的subsitution部分应该是这样的: HTTP://www.xmldomain.com/bla/$2?rtype=xslt&xsl=http%3A%2F%2F%{HTTP_HOST}%2F$1$2.xsl 如何模式部分看起来像这样做? – 2010-05-21 10:25:19

+0

这是我的错,我提供了正则表达式。正则表达式是否对变量进行操作? – 2010-05-21 15:16:25

+0

@ buggy1985确定,那么$ 1是多少? – Artefacto 2010-05-21 15:26:14

0

也许尝试这个

RewriteRule ^/(.+)/page/([^/]+)/(.*)$ domain/index.php?page=$2&host=%{HTTP_HOST} [QSA,NC,L]