1

初めて問題に遭遇しましたが、なぜこれが発生したのかわかりません。以下に、私の .htaccess ファイルの 3 行を示します。を/urun/test-123使用しurundetay.phpている間/urunlerimiz/は、使用する必要がありますurunlerimiz.php。問題は、「urunlerimiz」の中に「urun」が含まれているため、これら 3 つのリンクはすべて を使用していることurundetay.phpです。

RewriteRule ^urunlerimiz/?(.*)$ urunlerimiz.php [NC]
RewriteRule ^urun/?(.*)$ urundetay.php [NC]
RewriteRule ^urun-kategori/?(.*)$ urundetay.php [NC]

これらのパラメータを完全に異なるものに設定すると、正しく機能します。しかし、私はそれをそのように使用する必要があり、学びたい. これに対する解決策は何ですか?

4

2 に答える 2

1

私は自分のプロジェクトの1つでもこの問題を経験しましたが、これを解決する方法は次のとおりです。

RewriteRule ^urunlerimiz(/.*|)$ urunlerimiz.php [NC,L]
RewriteRule ^urun(/.*|)$ urundetay.php [NC,L]
RewriteRule ^urun-kategor(/.*|)$ urundetay.php [NC,L]

トリックは(/.*|)、すべてのキーワードの後に​​追加することです。

たとえば、正規表現の場合^urun(/.*|)$、これは/urunOR /urun/ORと一致し/urun/fooますが、一致せず/urunlerimiz/urun-kategor

于 2012-12-17T13:08:10.517 に答える
1

lerimiz 文字列が一致しないように、パターンで否定先読みを使用する必要があります。RewriteRule docsに従って、使用される正規表現パターンRewriteRuleは Perl と互換性があるため、次の方法で実行できるはずです。

RewriteRule ^urun(?!lerimiz)/?(.*)$ urundetay.php [NC]
于 2012-12-17T13:02:09.833 に答える