2016-05-22 3 views
1

私のサイトにフレンドリーなリンクを作成していますが、問題があります。私はこれを書いたが、唯一のコードの1行目では、働いている、とI'nはわからない理由:私はtest.com/user/tomに行くとき.htaccessセカンダリGETでRewriteEngineが機能しない

RewriteRule ^user/([0-9a-zA-Z]+) user.php?user=$1 [NC,L] 
RewriteRule ^user/([0-9a-zA-Z]+)/options user.php?user=$1&options [NC,L] 

すべてが正常であるが、私はtest.com/user/tom/optionsをしようとすると、それだけで同じページをLODA。

異なる$_GETの異なるページをロードするPHPスクリプトがあり、通常のリンクで使用されている場合は動作します。

+0

あなたは別の名前に二行目^ユーザーを変更できるかどうか... –

+0

!おかげで、単に回線を入れ替えました:) – newacccccc

+0

あなたの歓迎;) –

答えて

0

ここで正しいことは、ではなく、行を入れ替えることです。あなたの問題を解決するかもしれないが、それはまた最初のルールにuser/tom/foo/barを送るでしょう。これを行う理由は、パターンが$で閉じられていないためです。次のようにそのように、あなたのルールは次のようになります。

RewriteRule ^user/([0-9a-zA-Z]+)$ user.php?user=$1 [NC,L] 
RewriteRule ^user/([0-9a-zA-Z]+)/options$ user.php?user=$1&options [NC,L] 

ヒント:をあなたもユーザーのために他のページを持っている場合は、キャプチャによって異なるセグメントを含む第2のルールを簡素化することができます:

RewriteRule ^user/([0-9a-zA-Z]+)/(options|other-page)$ user.php?user=$1&$2 [NC,L] 

また、あなたがNC(なしの場合)フラグを使用しているという事実を考慮し、あなたのキャプチャグループでA-Zをドロップすることができます。数字には\dを使用することもできます。例私はそれがこのように働いて知りませんでした[a-z\d]+キャッチ最初の行... ため

関連する問題