0

私のサイトのプロフィールページのhtaccessルールは次のとおりです。

RewriteRule ^users/([0-9]+)/?(.+)?/?(.+)? profile.php?id=$1&slug=$2&tab=$3&%{QUERY_STRING}

お気に入りなどのユーザーのプロファイルのタブをクリックすると、次のようになります。

/ users / 83028 / nathan-johnson / favorites

:によると、 slug$_GETという名前の変数は、ちょうどではなく受信しており、変数は空白です。nathan-johnson/favoritesnathan-johnsontabvar_dump

array(3) { 
      ["id"]=> string(5) "83028" 
      ["slug"]=> string(24) "nathan-johnson/favorites" 
      ["tab"]=> string(0) "" }

問題は私のhtaccess正規表現(上記)にあるようですが、問題はありません。

前もって感謝します。

4

1 に答える 1

0

スラッシュは(を介して/?)オプションであるため、(.+)グループ化は貪欲であり、それらすべてをむさぼり食うでしょう。を追加して、貪欲でないものにする必要があります。:(。+?)

また、代わりに、なし、1つ、またはそれ以上を意味(.+)?するaを使用する必要があります。*

試す:

RewriteRule ^users/([0-9]+)/?([^/]*)/?(.*?)?$ profile.php?id=$1&slug=$2&tab=$3&%{QUERY_STRING}

また、を使用する代わりに、フラグ%{QUERY_STRING}を使用することもできます。QSA

RewriteRule ^users/([0-9]+)/?([^/]*)/?(.*?)?$ profile.php?id=$1&slug=$2&tab=$3 [L,QSA]
于 2012-10-24T22:25:25.070 に答える