2016-07-14 26 views
0

私は、leasing.phpとarticle.phpという2つのサブサイトを持つ単純なPHPサイトに取り組んでいます。 - これは細かい
http://domain/leasing/article-name(?ショーarticle.php別名= $変数)を動作します - これはないapache .htacces - urlに書き直し

私.htacces
http://domain/leasing(ショーleasing.php):私は、ユーザーにこのように、このサブサイトを見たい

ファイル:

RewriteEngine on 
RewriteRule ^(/$|$) index.php [NC,L] 
RewriteRule ^leasing leasing.php [NC,L] 
RewriteRule ^leasing/([A-Za-z0-9-]+)/?$ article.php?alias=$1 [NC,L] 

RewriteRulesを変更するとブラウザのarticle.phpページが表示されますか?

+0

LazyLizzard答えの1つが役に立った場合は、それを選択してください(必要に応じてupvote)。これらの答えを研究し、テストし、書き留めるには時間がかかります。聞いて実行するのは非常にクールではない。 – BeetleJuice

答えて

1

あなたのルールの両方が基礎を務めたパス/leasing/article-nameにマッチした、とURLの書き換えが最初に発生したので、最初に来ていることから、パーサもあなたの最後で見たことがないので、あなたがトラブルに走った

RewriteEngine on 
RewriteRule ^leasing$   leasing.php [NC,END] 
RewriteRule ^leasing/(.*)/?$ article.php?alias=$1 [NC,END] 

をお試しくださいルール。

修正プログラムは、/leasingと一致しても、/leasing/article-nameと一致しないように、最初のルールを変更します。これを行う最も簡単な方法は、リース直後にパターンを$で終了することです。その後に続くパスは、最初のルールと一致しなくなります。

私が使用しているフラグはあなたとは少し異なります。 Lがあるのに対し、ENDを使用します。違いは微妙ですが、基本的にはこのパス(最終的な宛先)に必要な最後の書き換えであることがわかっている場合は、ENDを使用してください。 leasing.phpのrewirteルールで

+0

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。また、コードと説明の両方の可読性が低下するため、説明的なコメントを使用してコードを混乱させないようにしてください。 – FrankerZ

+0

@dragosteは何がOPと彼の答えが間違っていたかを説明する良い仕事をしているので、私はそれが余分になると思った。おそらくあなたは正しいでしょう。 – BeetleJuice

1

ルック:

RewriteRule ^leasing leasing.php [NC,L] 

条件は "leasingを開始すべて" を意味^leasingです。これもleasing/article-nameのURLに一致します。

それだけで正確にleasing URLではなく他人を一致させるために、終了条件式(^leasing$)の記号(文字列終わりを意味する)$を追加します。

RewriteRule ^leasing$ leasing.php [NC,L]