0

私は.htaccessでこれをやっています:

RewriteRule ^([A-Za-z0-9-]+)[/]?$ /index.php?u1=$1 [L,QSA]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)[/]?$ /index.php?u1=$1&u2=$2 [L,QSA]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)[/]?$ /index.php?u1=$1&u2=$2&u3=$3 [L,QSA]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)[/]?$ /index.php?u1=$1&u2=$2&u3=$3&u4=$4 [L,QSA]

すべてのケースを定義することなく、URLの長さに基づいて、これをu1からu(無限)に自動的に作成する方法はありますか?

4

1 に答える 1

2

いいえ、Apache も正規表現も、指定されていない数の引数をプログラムで処理することはできません。しかし、PHP はそのようなことのために設計されているため、単純に 1 つのルールを使用するのが最善です。

RewriteRule ^([A-Za-z0-9/-]+)$ /index.php?path=$1

次に、PHP スクリプトで、スラッシュ文字の爆発path関数を呼び出して変数を分割します。そして、フル パスの各部分を含む配列を取得します。

このようにして、PHP スクリプトは無制限の数のパス要素を処理でき、Apache は無限の正規表現パターンを理解しようとして疲れ果ててしまう必要がなくなります。

于 2012-09-16T14:08:27.820 に答える