这是对此问题的跟进: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]
你能帮忙吗?
由于
答案 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]