1

我第一次遇到问题,不知道为什么会遇到这个问题。下面你会看到我的 .htaccess 文件的三行。/urun/test-123使用时urundetay.php/urunlerimiz/不得不使用urunlerimiz.php。问题是因为 'urunlerimiz' 在其中包含 'urun',所有这三个链接都使用urundetay.php.

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

当我将这些参数设置完全不同时,它可以正常工作。但我必须那样使用它,我想学习。解决方案是什么?

4

2 回答 2

1

您需要在模式中使用负前瞻,以便字符串lerimiz 不会产生匹配。因为,根据RewriteRule 文档,使用的正则表达式模式与RewriteRulePerl 兼容,您应该可以这样做:

RewriteRule ^urun(?!lerimiz)/?(.*)$ urundetay.php [NC]
于 2012-12-17T13:02:09.833 回答
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但不会匹配/urunlerimizand/urun-kategor

于 2012-12-17T13:08:10.517 回答