1

如何从中制作http://site.com/id555/forum666/thread777http://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。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
4

1 回答 1

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
于 2013-07-15T01:04:44.027 回答