1

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、私はそれをこのようにします.

重要: 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

あなたの2回目の試みは近かったと思います。これはどう:

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 に答える