1

.htaccess私は書き直したかった:

example.com/bla/info/

example.com/info/index.php?q=bla

example.com/bla/info/txt/

example.com/info/index.php?q=bla&t=txt

私はブラウザにまだ表示させたかった:

example.com/bla/info/txt/

レベル2の書き換えでは、次のように書き換えたくありませんでした。

example.com/bla/xxx/ 

また

example.com/ccc/zzz/aaa/

しかし

example.com/silly/info/ 

同様に動作します

example.com/strange/info/mytxt/

これは理にかなっていますか?

何か助けはありますか?

4

2 に答える 2

0

パターンを ^ で開始し、$ で終了する場合、ルールは文字列全体が一致する場合にのみ適用されます。

RewriteRule   ^/bla/info/$      /info/index.php?q=bla
RewriteRule   ^/bla/info/txt/$  /info/index.php?q=bla&t=txt

[R] オプションを使用しない場合、ブラウザに表示される URL はユーザーが入力したものになります。

これを汎用化しようとしているのですか?その場合、regex-type マッチングと変数置換を使用できます。'bla' を次のスラッシュ (/) までの任意の文字列に一致させるには、以下を使用します。

([^/]+)

パターンで、置換で $1 を使用して参照します。

RewriteRule ^/([^/]+)/info/$          /info/index.php?q=$1
RewriteRule ^/([^/]+)/info/([^/]+)/$  /info/index.php?q=$1&t=$2

詳細については、mod_rewrite に関する Apache Web ページを参照することをお勧めします。

[編集。元の投稿者が把握したように、パターンにホスト名を含めないようにルールを修正しました。]

--
bmb

于 2009-01-09T21:19:54.823 に答える
0

あなたは私を正しい軌道に乗せました。

私はこのようなもので終わった:

RewriteRule ^([^/\.]+)/info/?$ example/info/index.php?q=$1 [L]

どうもありがとう

于 2009-01-10T16:01:22.190 に答える