2012-12-17 56 views
1

我第一次遇到問題,不知道爲什麼我有這個。 下面你看到我的.htaccess文件的三行。而/urun/test-123使用urundetay.php,/urunlerimiz/必須使用urunlerimiz.php。這個問題是因爲'urunlerimiz'包括'urun'在內,所有這三個鏈接都使用urundetay.phphtaccess RewriteRule一個參數包括其他

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

它工作正常,當我設置這些參數完全不同。但我必須這樣使用它,並且我想學習。 這是什麼解決方案?

回答

1

我已經在我的項目之一遇到過這個問題,以及這裏是我如何解決它:

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

訣竅是在每個關鍵字後附加(/.*|)

例如爲正則表達式^urun(/.*|)$這將匹配/urun/urun//urun/foo但不會匹配/urunlerimiz/urun-kategor

+0

謝謝。這解決了我的問題。 – Mustafa

1

您需要在模式中使用負向預覽,以便字符串lerimiz不會產生匹配。至於,據此向RewriteRule docsRewriteRule使用的正則表達式是Perl兼容的,你應該能夠做到這一點是這樣的:

RewriteRule ^urun(?!lerimiz)/?(.*)$ urundetay.php [NC]