如何从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]
但我得到的所有内容都是http://site.com/#id=555
,所以我试着这样做:
RewriteEngine on
RewriteRule ^(/(id|forum|thread)([0-9]+))+ #$2=$3 [NC,NE,N,R=303]
结果是http://site.com/#thread=777
。一个不明白,我必须如何改变规则,以正确的方式得到它。我在VirtualHost
部分的主配置中使用它,因为它对我来说非常类似,但如果你帮助我使用.htaccess
,我就会这样做。
重要提示:可以按任意顺序在网址中输入任意数量的变量。 例子:
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
答案 0 :(得分:1)
我认为你的第二次尝试很接近。怎么样:
RewriteRule ^(.*)/(id|forum|thread)([0-9]+)(.*) $1#$2=$3$4 [N,NC,NE,R=303]
在规则中,N标志会使规则按需要重复,直到完成为止。在每次迭代中,它将最右边的/ id555组转换为#id = 555。
^(.*)
=尚未转化的领导小组(如果有的话)
/(id|forum|thread)([0-9]+)
=在此次迭代中正在处理的组
(.*)
=尾随组(如果有)已经处理
但是我想在此之后,领先的/
可能会消失,转变为#
。因此,您可能需要按照
RewriteRule (.*) /$1