mod_rewrite RewriteRule不起作用

时间:2010-05-21 09:40:54

标签: mod-rewrite

这是对此问题的跟进:Rewrite URL - how to get the hostname and the path?

我得到了这个重写规则:

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]
你能帮忙吗?

由于

2 个答案:

答案 0 :(得分: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]

另请注意,虚拟主机不会自动继承重写规则。您必须明确激活继承。

答案 1 :(得分:0)

也许试试这个

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