Url 如何使用mod_重写获得多个变量

Url 如何使用mod_重写获得多个变量,url,mod-rewrite,apache2,config,virtualhost,Url,Mod Rewrite,Apache2,Config,Virtualhost,如何从http://site.com/id555/forum666/thread777此http://site.com/#id=555#forum=666#thread=777? 我试过这样做: RewriteEngine on RewriteRule ^/id([0-9]+)/?$ /#id=$1 [NC,NE,R=303] RewriteRule ^/forum([0-9]+)/?$ /#forum=$1 [NC,NE,R=303] RewriteRule ^/thread([0-9]+)/

如何从
http://site.com/id555/forum666/thread777
http://site.com/#id=555#forum=666#thread=777
? 我试过这样做:

RewriteEngine on
RewriteRule ^/id([0-9]+)/?$ /#id=$1 [NC,NE,R=303]
RewriteRule ^/forum([0-9]+)/?$ /#forum=$1 [NC,NE,R=303]
RewriteRule ^/thread([0-9]+)/?$ /#thread=$1 [NC,NE,R=303]
RewriteEngine on
RewriteRule ^(/(id|forum|thread)([0-9]+))+ #$2=$3 [NC,NE,N,R=303]
但我从中得到的只是
http://site.com/#id=555
,所以我试着这样做:

RewriteEngine on
RewriteRule ^/id([0-9]+)/?$ /#id=$1 [NC,NE,R=303]
RewriteRule ^/forum([0-9]+)/?$ /#forum=$1 [NC,NE,R=303]
RewriteRule ^/thread([0-9]+)/?$ /#thread=$1 [NC,NE,R=303]
RewriteEngine on
RewriteRule ^(/(id|forum|thread)([0-9]+))+ #$2=$3 [NC,NE,N,R=303]
结果是
http://site.com/#thread=777
。A我不明白,我必须如何改变规则,才能让它走上正确的道路。我在
VirtualHost
部分的主配置中使用它,因为它与我非常相似,但是如果您帮助我使用
.htaccess
,我会这样做

重要提示:它可以是URL中任意数量的变量,并且可以是任意顺序。 示例:

http://site.com/thread777/forum666
http://site.com/id555/thread777
http://site.com/forum666
http://site.com/id555/forum666/thread777/id333/id444/forum777
它们都必须以如下方式进行转换:

http://site.com/#thread=777#forum=666
http://site.com/#id=555#thread=777
http://site.com/#forum=666
http://site.com/#id555#forum=666#thread=777#id=333#id=444#forum=777

我想你的第二次尝试很接近。这个怎么样:

RewriteRule ^(.*)/(id|forum|thread)([0-9]+)(.*) $1#$2=$3$4 [N,NC,NE,R=303]
与您的规则一样,N标志使规则根据需要重复多次,直到完成为止。在每次迭代中,它将最右边的一组/id555或其他内容转换为#id=555

^(.*)
=尚未转变的领导小组(如有)

/(id |论坛|线程)([0-9]+)
=此迭代中正在处理的组

(.*)
=已处理的尾随组(如果有)

然而,我认为在这之后,领先的
/
可能会消失,转变为
。因此,您可能需要按照上面的规则

RewriteRule (.*) /$1

我想你的第二次尝试很接近。这个怎么样:

RewriteRule ^(.*)/(id|forum|thread)([0-9]+)(.*) $1#$2=$3$4 [N,NC,NE,R=303]
与您的规则一样,N标志使规则根据需要重复多次,直到完成为止。在每次迭代中,它将最右边的一组/id555或其他内容转换为#id=555

^(.*)
=尚未转变的领导小组(如有)

/(id |论坛|线程)([0-9]+)
=此迭代中正在处理的组

(.*)
=已处理的尾随组(如果有)

然而,我认为在这之后,领先的
/
可能会消失,转变为
。因此,您可能需要按照上面的规则

RewriteRule (.*) /$1

非常感谢,这正是我需要的。第二条规则是不需要的,因为您可以在前面有$1的情况下随时拖动/anytime。另外,在我的服务器和浏览器上,如果没有重写规则(.*)/$1,也不会有问题。非常感谢,这正是我所需要的。第二条规则是不需要的,因为您可以在前面有$1的情况下随时拖动/anytime。同样,在我的服务器和浏览器上,如果没有重写规则(.*)/$1,它也不会有问题