0

修正が必要な htaccess があります。私のサイトでは、URL 内に複数のカテゴリを表示できるため、異なるカテゴリのアイテムを同時にユーザーに表示できます。例は domain.com/fans.php?cat[]=1&cat[]=2&cat[]=3 のようになります

この URL をわかりやすくするために、htaccess に 1 つのカテゴリに対して 1 行、2 つのカテゴリに対して別の行、3 つのカテゴリに対して別の行などを追加します。以下に示すように

RewriteRule ^fans/category/([a-zA-Z0-9\-]+)$ fans.php?cat=$1

上記は domain.com/fans/category/1 になります

RewriteRule ^fans/category/([a-zA-Z0-9\-]+)&([a-zA-Z0-9\-]+)$ fans.php?cat[]=$1&cat[]=$2

上記は domain.com/fans/category/1&2 になります

RewriteRule ^fans/category/([a-zA-Z0-9\-]+)&([a-zA-Z0-9\-]+)&([a-zA-Z0-9\-]+)$ fans.php?cat[]=$1&cat[]=$2&cat[]=$3

上記は domain.com/fans/category/1&2&3 になります

私の質問は、4 つのカテゴリまたは 10 のカテゴリを表示する必要がある場合はどうすればよいかということです。n 回のカテゴリ結合を許可する htacesss の書き換えルールを簡素化する方法はありますか? または、上記のように繰り返し続ける必要がありますか。

4

1 に答える 1

2

cat[]=オプションの正規表現グループが十分にあり、空のキー ( ) が問題にならない限り、1 つのルールを持つことが可能です。最大 3 つのパラメーターの例:

リクエスト:http://example.com/fans/category/1&2&3

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^fans/category/([^&]+)&?([^&]+)?&?([^&]+)?$ /fans.php?cat1=$1&cat2=$2&cat3=$3 [L,NC]

ただし、多くのパラメーターがある場合は、単一の書き換えルールを使用して、パラメーターを含む完全な URI パスをスクリプトに渡す方が適切で、用途が広くなります。このような:

RewriteRule ^fans/category/(.*) /fans.php?$1 [L,NC]

次のようなコードを使用して、スクリプト内のパラメーターを取得します。

<?php 
$Query = $_SERVER['QUERY_STRING'];
$Parameters = explode ('&', $Query);
echo "cat1 = ". $Parameters[0] . "<br />";
echo "cat2 = ". $Parameters[1] . "<br />";
echo "cat3 = ". $Parameters[2] . "<br />";
...
?>

PHP で同じ結果を得る方法はいくつかありますが、もっと良い方法があるかもしれません。これは単なる例です。

于 2013-04-21T07:30:53.687 に答える